ブーストの 1.53 ヘッダーの weak_ptr を調べたところ、文書化されていないにもかかわらず、ムーブ代入とムーブ コンストラクターが実装されていることに驚きました。このドキュメントから、移動機能を提供する std::weak_ptr の要件はありません。
Visual Studio 2012 の weak_ptr の実装を見てみると、weak_ptr で宣言されている明らかな移動操作は見当たりませんが、継承の背後に隠されている可能性があります。ただし、このコードの結果、ウォッチ ウィンドウで 1 つの共有参照と 2 つの弱い参照がポインターに報告されるため、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));
std::weak_ptr が移動機能を提供しない正当な理由はありますか? そうでない場合は、weak_ptr を可動型として扱う必要がありますか?