weak_ptr에 대한 부스트의 1.53 헤더를 살펴보면, 나는 이동 할당과 이동 생성자가 문서화되지 않았음에도 불구하고 구현되었다는 사실에 놀랐다. 이 documentation에서 이동 기능을 제공하기위한 std :: weak_ptr에 대한 요구 사항은 없습니다.std :: weak_ptr에 이동 생성자 또는 이동 할당 연산자가없는 이유는 무엇입니까?
Visual Studio 2012의 weak_ptr 구현을 살펴보면 weak_ptr에서 명시된 이동 작업을 알 수 없지만 weak_ptr은 상속 뒤에 숨겨져있을 수 있습니다. 그러나, weak_ptr를 활성화으로 이동되지 않고 있는게 틀림 없어 하나의 공유 참조 및 포인터 두 약한 참조,보고 시계 창에서이 코드 결과 :
std::shared_ptr<int> ptr(std::make_shared<int>(5));
std::weak_ptr<int> weakptr(ptr);
std::weak_ptr<int> movedWeakPtr(std::move(weakptr));
은 표준이 좋은 이유가 있나요 :: weak_ptr은 이동 기능을 제공하지 않습니까? 그렇지 않다면 weak_ptr을 이동 가능한 유형으로 처리해야합니까?
C++에서 14 weak_ptr *은 이동 생성자를가집니다 § 20.8.2.3.1 [util.smartptr.weak] –