STD :: 스트림은 이미 움직일 수 있습니까?
문제
GNU GCC 4.3은 다가오는 C ++ 0X 표준을 부분적으로 지원합니다. 구현 된 기능 중 RValue 참조. rvalue 참조를 통해 인식 할 수없는 객체를 이동하거나 함수에서 반환 할 수 있어야합니다.
STD :: 스트림은 이미 움직일 수 있습니다 rvalue 참조를 통해 아니면 현재 라이브러리 구현에 무언가가 부족합니까?
해결책
현재 G ++ SVN에서 RValue Reference 지원은 아직 스트림에 추가되지 않았습니다. 나는 그것을 추가하는 것이 너무 어렵지 않을 것이라고 생각합니다. 오픈 소스 소프트웨어와 마찬가지로 패치는 확실합니다.
다른 팁
빠른 조사 후에 나옵니다 rvalue 참조 지원은 아직 스트림에 추가되지 않았습니다.
기능에서 인정받지 못한 객체를 반환하려면 실제로 구현하기에 충분합니다. 생성자를 이동하십시오 다음과 같이 :
struct noncopyable
{
noncopyable()
{}
// move constructor
noncopyable(noncopyable &&)
{}
private:
noncopyable(const noncopyable &);
noncopyable &operator=(const noncopyable &);
};
이러한 생성자는 소유권을 새 객체로 이전해야합니다.
즉, 이러한 방식으로 함수에서 객체를 반환 할 수 있습니다.
noncopyable factory()
{
noncopyable abc;
return std::move(abc);
}
STD :: 스트림은 이동 생성자를 지원하지 않지만 GCC 4.3.2가 포함 된 STL 컨테이너는 이미 지원하는 것으로 보입니다.
제휴하지 않습니다 StackOverflow