한 가정 허용 한 전체 식 회 이동된다 (의 이동 된 버전)에 전달 된 객체, 또는 완전히 다른을 다음 프로토가
template<typename T>
std::unique_ptr<T> process_object(std::unique_ptr<T> ptr);
함수가 리턴 할 수
과 기능을 갖는다 목적.
다음과 같이이 함수를 사용하는 것이 합법적입니까?
std::unique_ptr<Widget> pw(new Widget());
pw = process_object(std::move(pw));
올바르게 기억하면 하나의 전체 식에서 개체를 두 번 이상 수정하는 것을 금지하는 C/C++ 규칙이 있습니다. 이 규칙이 여기에 적용됩니까? 그렇다면,이 관용구를 한 줄로 다르게 표현할 수있는 방법이 있습니까?
std::unique_ptr
을 멸종 된 std::auto_ptr
으로 대체하면 어떻게 될까요?
'std :: unique_ptr &&'인수를 취하는'process_object'를 의미 했습니까? –
Walter
@Walter 왜 그렇게 생각하니? 'unique_ptr'의 소유권을 넘기는 것은 값에 의해 수행됩니다. –
'auto_ptr'은 더 이상 사용되지 않습니다. – Walter