boost::scoped_ptr<T>
とstd::unique_ptr<T>
の唯一の違いは、std::unique_ptr<T>
が移動セマンティクスを持っているのに対し、boost::scoped_ptr<T>
は単なるget/resetスマートポインターですか?
いいえ、しかしそれが最も重要な違いです。
もう1つの大きな違いは、unique_ptr
ができる方法と同様に、shared_ptr
がデストラクタオブジェクトを持つことができることです。 shared_ptr
とは異なり、デストラクタタイプはunique_ptr
のタイプの一部です(アロケータがSTLコンテナタイプの一部である方法)。
unique_ptr
はオブジェクトを排他的に所有します。これはコピー不可ですが、所有権の移転をサポートしています。廃止されたauto_ptr
の代替として導入されました。
scoped_ptr
はコピーも移動もできないです。スコープ外に出たときにポインターを確実に削除したい場合に推奨される選択肢です。