Skip to content

Latest commit

 

History

History
61 lines (43 loc) · 2.28 KB

out_ptr_t.md

File metadata and controls

61 lines (43 loc) · 2.28 KB

out_ptr_t

  • memory[meta header]
  • class template[meta id-type]
  • std[meta namespace]
  • cpp23[meta cpp]
namespace std {
  template<class Smart, class Pointer, class... Args>
  class out_ptr_t;
}

概要

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

C++標準スマートポインタstd::shared_ptrstd::unique_ptrを始め、互換インタフェースをもつ任意のスマートポインタ型Smartを取り扱える。

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

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

PointerはCpp17NullablePointer要件を満たすこと

適格要件

Smartshared_ptrの特殊化かつsizeof...(Args) == 0の場合、プログラムは不適格となる。 (根拠説明はデストラクタを参照のこと。)

メンバ関数

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

バージョン

言語

  • C++23

処理系

関連項目

参照