std:: inout_ptr
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Non-member functions | ||||
|
inout_ptr
|
|
ヘッダーで定義
<memory>
|
||
|
template
<
class
Pointer
=
void
,
class
Smart,
class
...
Args
>
auto inout_ptr ( Smart & s, Args && ... args ) ; |
(C++23以降) | |
参照によってリセットするための引数を捕捉する、推定されたテンプレート引数を持つ
inout_ptr_t
を返します。
戻り値(下記参照)の構築が不適格である場合、プログラムは不適格です。
目次 |
パラメータ
| s | - | アダプトするオブジェクト(通常スマートポインタ) |
| args... | - | リセット用にキャプチャする引数 |
戻り値
std::
inout_ptr_t
<
Smart, P, Args
&&
>
(
s,
std::
forward
<
Args
>
(
args
)
...
)
ここで、
P
は
-
Pointer、ただしPointerが void 型でない場合。それ以外の場合、 - Smart :: pointer 、ただし有効かつ型を示す場合。それ以外の場合、
- Smart :: element_type * 、ただし Smart :: element_type が有効かつ型を示す場合。それ以外の場合、
- std:: pointer_traits < Smart > :: element_type * 。
注記
ユーザーはテンプレートパラメータ
Pointer
のテンプレート引数を指定することで、
Pointer
*
を受け取る外部関数との相互運用が可能になります。
リセットのためのすべての引数は参照によってキャプチャされるため、返される
inout_ptr_t
は、フルエクスプレッションの終了時に破棄される一時オブジェクトであるべきです。これにより、ダングリング参照を回避するために、外部関数呼び出しを含むフルエクスプレッション内で適切に管理されます。
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_out_ptr
|
202106L
|
(C++23) |
std::out_ptr
,
std::inout_ptr
|
202311L
|
(C++26) |
フリースタンディング
std::out_ptr
および
std::inout_ptr
|
例
|
このセクションは不完全です
理由: 例がありません |
関連項目
|
(C++23)
|
関連するスマートポインタとリセット引数を持つ
out_ptr_t
を作成する
(関数テンプレート) |
|
(C++14)
(C++20)
|
新しいオブジェクトを管理するユニークポインタを作成する
(関数テンプレート) |
|
新しいオブジェクトを管理する共有ポインタを作成する
(関数テンプレート) |