Namespaces
Variants

std:: inout_ptr

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
ヘッダーで定義 <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 を作成する
(関数テンプレート)
新しいオブジェクトを管理するユニークポインタを作成する
(関数テンプレート)
新しいオブジェクトを管理する共有ポインタを作成する
(関数テンプレート)