std::auto_ptr<T>::operator=
From cppreference.com
| 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<T> m ) throw(); |
(3) | (C++11で非推奨) (C++17で削除) |
r または m が管理するオブジェクトを置き換えます。
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 参照として取るため、rvalue 引数を直接バインドできません。 ただし、(元の auto_ptr を解放する) ユーザー定義変換を実行してから、auto_ptr_ref を値として取るコンストラクタまたはコピー代入演算子を呼び出すことができます。これは、ムーブセマンティクスの初期実装です。
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 127 | C++98 | auto_ptr は auto_ptr_ref から代入可能ではなかった |
オーバーロード (3) を追加 |