반응형
std :: ostream을 이동할 수없는 이유는 무엇입니까?
분명히 스트림은 복사 할 수 없습니다. 스트림 이동이 가능해야합니다. 27.9.1.11 [ofstream.cons] 제 4 항에 따라 구성은 이동하는 것이 가능하다 std::ofstream
(동일 마찬가지이고 std::ifstream
, std::fstream
그리고는 std::*stringstream
변형). 예를 들면 :
#include <iostream>
#include <fstream>
#include <string>
std::ofstream makeStream(std::string const& name) {
return std::ofstream(name);
}
int main()
{
std::ofstream out{ makeStream("example.log") };
}
std::ostream
예를 들어, 인수로 전달 된 URN에 따라 std::ofstream
, an std::ostringstream
또는 다른 스트림을 생성하는 팩토리 함수를 갖기 위해를 이동하려고하면 작동하지 않습니다. std::ostream
(음, 클래스 템플릿은 std::basic_ostream
실제로) protected
27.7.3.1 [ostream]에 따라 이동 생성자를 가지고 있습니다.
왜 std::ostream
스스로 움직일 수 없습니까?
원래는 움직일 수있었습니다. 이것은 제 부분의 디자인 결함으로 밝혀졌고 Alberto Ganesh Barbati가 발견했습니다.
http://cplusplus.github.io/LWG/lwg-defects.html#911
이 문제는 ostream
이동 및 / 또는 교체 되는 몇 가지 예를 보여 주며 결과는 예상보다 놀랍습니다. 나는 이러한 유형이 공개적으로 이동하거나이 문제로 교체 할 수 없어야한다고 확신했습니다.
참조 URL : https://stackoverflow.com/questions/20774587/why-cant-stdostream-be-moved
반응형
'programing' 카테고리의 다른 글
워크 시트 데이터에 대해 SQL과 유사한 쿼리를 만드는 Excel 기능? (0) | 2021.01.15 |
---|---|
오픈 그래프는 상대 URL을 확인할 수 있습니까? (0) | 2021.01.15 |
연도와 연도의 차이점은 무엇입니까? (0) | 2021.01.15 |
(GitHub) Markdown에서 이미지 주위에 텍스트 흐름 (0) | 2021.01.14 |
필수 하위 구문 분석기가있는 Argparse (0) | 2021.01.14 |