std::auto_ptr<T>::auto_ptr
提供: cppreference.com
<tbody>
</tbody>
explicit auto_ptr( X* p = 0 ) throw(); |
(1) | (C++11で非推奨) (C++17で削除) |
auto_ptr( auto_ptr& r ) throw(); |
(2) | (C++11で非推奨) (C++17で削除) |
template< class Y > auto_ptr( auto_ptr<Y>& r ) throw(); |
(3) | (C++11で非推奨) (C++17で削除) |
auto_ptr( auto_ptr_ref<X> m ) throw(); |
(4) | (C++11で非推奨) (C++17で削除) |
管理するオブジェクトを参照するポインタから auto_ptr を構築します。
1) ポインタ
p を持つ auto_ptr を構築します。2)
r に保持されているポインタを持つ auto_ptr を構築します。 オブジェクトの所有権を取得するために r.release() が呼ばれます。3) (2) と同じです。
Y* は暗黙に T* に変換可能でなければなりません。4)
m によって参照される auto_ptr のインスタンスに保持されているポインタを持つ auto_ptr を構築します。 オブジェクトの所有権を取得するために m が保持する auto_ptr p に対して p.release() が呼ばれます。auto_ptr_ref は auto_ptr を指す参照を保持する処理系定義の型です。 std::auto_ptr は暗黙にこの型に変換可能かつこの型から代入可能です。 処理系は別の名前を持つテンプレートを提供したり他の方法で同等な機能を実装しても構いません。引数
| p | - | 管理するオブジェクトを指すポインタ |
| r | - | オブジェクトの所有権の転送元となる別の auto_ptr
|
| m | - | auto_ptr を指す参照を保持する処理系定義の型
|
ノート
auto_ptr_ref からのコンストラクタおよびコピー代入演算子は無名の一時オブジェクトからの std::auto_ptr のコピー構築および代入を可能とするために提供されます。 コピーコンストラクタおよびコピー代入演算子は引数を非 const 参照として取るため、右辺値引数を直接束縛できません。 しかし、 (元の auto_ptr を解放する) ユーザ定義変換を実行し、その後 auto_ptr_ref を値で取るコンストラクタまたはコピー代入演算子を呼ぶことはできます。 これはムーブセマンティクスの初期の実装です。