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