std::inout_ptr
From cppreference.com
< cpp | memory | inout ptr t
| ヘッダ <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と void が異なる場合、Pointer、それ以外の場合、 - 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) |
新しいオブジェクトを管理する一意のポインタを作成する (関数テンプレート) |
| 新しいオブジェクトを管理する共有ポインタを作成します (関数テンプレート) |