std::auto_ptr<T>:: auto_ptr
From ja.cppreference.net
|
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)
auto_ptr
をポインタ
p
で構築します。
2)
auto_ptr
を、
r
が保持するポインタで構築します。
r.
release
(
)
が呼び出され、オブジェクトの所有権を取得します。
3)
(2)と同様。
Y
*
は
T
*
に暗黙的に変換可能でなければならない。
4)
auto_ptrを、
m
によって参照されるauto_ptrインスタンスが保持するポインタで構築します。
p.
release
(
)
が、オブジェクトの所有権を取得するために
m
が保持するauto_ptr pに対して呼び出されます。
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を値で受け取るコンストラクタまたはコピー代入演算子を呼び出すことができます。
これはムーブセマンティクスの
初期の実装です。