문제

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 컨테이너는 이미 지원하는 것으로 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top