私は、次のコードを持っている:それは、これはC++ 11(それはドラフトバージョンであることを使用)とすることを割り当てコンストラクタ有効でないことが判明C++ 11のshared_ptrの割り当て
#include <memory>
int main(void)
{
std::shared_ptr<int> currInt(nullptr);
std::shared_ptr<int> newInt(new int);
currInt = newInt;
return 0;
}
を現在は移動セマンティクスを使用しています。私は理解できない何か。
誰かが私がそれを作るために上記のコードを変更する方法を説明してもらえますか?
割り当ては、移動セマンティクスを使用してはいけません。これは、 'unique_ptr'が対象です。予期せぬ挙動はどういうものですか? –
C++ 11では、shared_ptrのコピーコンストラクタは、ムーブコンストラクタのために削除されます。私は実際に多くの移動意味を理解していません。あなたがClang 3.0でこれをコンパイルしようとすると、あなた自身がエラーを見ることができます。 – Jookia
私はこれがそうであると信じていません。 [このページ](http://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr)を参照してください。私の知る限り、情報は最新です。また、このコードはGCC 4.6.1でコンパイルされます。これが私にとって意味をなさない最大の理由は、移動セマンティクスでは、移動元のオブジェクトが「空の」状態になっている必要があることです。これは明らかに 'shared_ptr'では望ましくありません。私が間違っているなら、私を修正してください。 –