名前空間
変種
操作

std::inout_ptr

From cppreference.com
< cpp‎ | memory‎ | inout ptr t
 
 
メモリ管理ライブラリ
(説明用*)
未初期化メモリのアルゴリズム
(C++17)
(C++17)
(C++17)
制約付き未初期化
メモリアルゴリズム
Cライブラリ

アロケータ
メモリリソース
ガベージコレクションのサポート
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
未初期化ストレージ
(C++20まで*)
(C++20まで*)
明示的な生存期間管理
 
 
ヘッダ <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 は、

  • Pointervoid が異なる場合、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_ptrstd::inout_ptr
202311L (C++26) フリースタンディングなstd::out_ptrstd::inout_ptr

[編集]

[編集] 関連項目

(C++23)
関連付けられたスマートポインタとリセット引数を持つ out_ptr_t を作成します
(関数テンプレート) [編集]
新しいオブジェクトを管理する一意のポインタを作成する
(関数テンプレート) [編集]
新しいオブジェクトを管理する共有ポインタを作成します
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)