std::unique_ptr class
(소유권 이동을 시도하는) 멤버를 호출자에게 반환하려고합니다.클래스 메서드에서 unique_ptr을 반환하는 중
class A {
public:
A() : p {new int{10}} {}
static std::unique_ptr<int> Foo(A &a) {
return a.p; // ERROR: Copy constructor getting invoked
// return std::move(a.p); WORKS FINE
}
std::unique_ptr<int> p;
};
내가 컴파일러 (GCC-5.2.1) 생각 std::move()
를 통해 명시 적 의도없이이 경우 반환 값 최적화 (복사 생략)를 할 수있을 것입니다 : 다음은 샘플 코드입니다. 하지만 그렇지 않습니다. 왜 안돼?
다음 코드 보인다, 잘 동작하는 것 동등한 :
std::unique_ptr<int> foo() {
std::unique_ptr<int> p {new int{10}};
return p;
}
위대한 첫 번째 질문입니다. StackOverflow에 오신 것을 환영합니다! – Barry