std::inout_ptr_t<Smart,Pointer,Args...>:: inout_ptr_t
From ja.cppreference.net
<
cpp
|
memory
|
inout ptr t
|
explicit
inout_ptr_t
(
Smart
&
sp, Args...
args
)
;
|
(1) | (C++23以降) |
|
inout_ptr_t
(
const
inout_ptr_t
&
)
=
delete
;
|
(2) | (C++23以降) |
1)
inout_ptr_tを作成する。
sp
を
Smart
&
メンバにバインドするように適応させ、
args...
内の各引数
tを
std::
forward
<
T
>
(
t
)
で
Args...
内の対応する型
Tのメンバを初期化するようにキャプチャし、その後、保存された
Pointerを
sp
で初期化する(
Smartがポインタ型の場合)。それ以外の場合は
sp.
get
(
)
で初期化する。
Smartがポインタ型でない場合、
sp.
release
(
)
が呼び出される可能性があり、その場合デストラクタ内で再び呼び出されることはない。
2)
コピーコンストラクタは明示的に削除されています。
inout_ptr_t
はコピーも移動もできません。
目次 |
パラメータ
| sp | - | アダプトするオブジェクト(通常はスマートポインタ) |
| args... | - | リセットに使用する引数をキャプチャする |
戻り値
(なし)
例外
実装定義の例外をスローする可能性があります。
注記
Smartがポインタ型でなく、かつコンストラクタによって
sp.
release
(
)
が呼び出されない場合、デストラクタによって
sp
をリセットする前に呼び出される可能性があります。
args...
内のすべての引数は、オブジェクト型の場合に作成された
inout_ptr_t
にムーブされ、参照型の場合にはそのまま作成された
inout_ptr_t
に転送されます。
inout_ptr_tのコンストラクタは例外を送出することが許可されています。例えば、
sp
が制御ブロックを持つ侵入型ポインタの場合、新しい制御ブロックの割り当てはデストラクタではなくコンストラクタ内で実行される可能性があります。
例
|
このセクションは不完全です
理由: 例がありません |