std::auto_ptr<T>::operator auto_ptr<Y>
From cppreference.com
| template< class Y > operator auto_ptr_ref<Y>() throw(); |
(1) | (C++11で非推奨) (C++17で削除) |
| template< class Y > operator auto_ptr<Y>() throw(); |
(2) | (C++11で非推奨) (C++17で削除) |
現在の `*this` を、別の型 `Y` の `auto_ptr` に変換します。
1) `*this` への参照を保持する、実装定義の型を返します。`std::auto_ptr` は、このテンプレートから変換可能であり、代入可能です。実装は、テンプレートに異なる名前を提供するか、他の方法で同等の機能を提供することが許可されています。
2) `release()` を呼び出して取得したポインタで、新しい `auto_ptr` を構築します。
[編集] パラメータ
(なし)
[編集] 戻り値
1) `*this` への参照を保持する、実装定義の型。
2) `release()` を呼び出して取得したポインタを持つ `auto_ptr`。
[編集] 注釈
`auto_ptr_ref` からのコンストラクタとコピー代入演算子は、名前のない一時オブジェクトから `std::auto_ptr` をコピー構築および代入できるように提供されています。コピーコンストラクタとコピー代入演算子は引数を非const参照で受け取るため、右辺値引数を直接バインドできません。しかし、ユーザー定義変換 (1) または (2) を実行し(これにより元の `auto_ptr` は解放されます)、その後、`auto_ptr_ref` を値で受け取るコンストラクタまたはコピー代入演算子を呼び出すことができます。これは、ムーブセマンティクスの初期実装です。