最終更新日時(UTC):
が更新

履歴 編集

class template
<memory>

std::inout_ptr_t(C++23)

namespace std {
  template<class Smart, class Pointer, class... Args>
  class inout_ptr_t;
}

概要

2重ポインタT**(=Pointer*)引数経由で既存リソースを解放してから新規確保リソースへのポインタを返すレガシーC関数に対して、取得されたポインタ値をスマートポインタに格納するアダプタクラス。 アダプタオブジェクトの生成には、std::inout_ptr()ヘルパ関数を利用する。

リソース占有管理セマンティクスを提供するC++標準スマートポインタstd::unique_ptrを始め、互換インタフェースをもつ任意のスマートポインタ型Smartを取り扱える。

プログラマはinout_ptr_tクラステンプレートの特殊化を定義してもよい。 このとき1つ以上のプログラム定義型に依存していれば、プライマリテンプレートにおける要件を満たす必要はない。

テンプレートパラメータ制約

PointerはCpp17NullablePointer要件を満たすこと

適格要件

Smartshared_ptrの特殊化の場合、プログラムは不適格となる。

メンバ関数

名前 説明 対応バージョン
(constructor) コンストラクタ C++23
(destructor) デストラクタ C++23
operator Pointer*() Pointer*への暗黙変換 C++23
operator void**() void**への暗黙変換 C++23

バージョン

言語

  • C++23

処理系

関連項目

参照