- 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_ptr
やstd::unique_ptr
を始め、互換インタフェースをもつ任意のスマートポインタ型Smart
を取り扱える。
プログラマはout_ptr_t
クラステンプレートの特殊化を定義してもよい。
このとき1つ以上のプログラム定義型に依存していれば、プライマリテンプレートにおける要件を満たす必要はない。
Pointer
はCpp17NullablePointer要件を満たすこと
Smart
がshared_ptr
の特殊化かつsizeof...(Args) == 0
の場合、プログラムは不適格となる。
(根拠説明はデストラクタを参照のこと。)
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | C++23 |
(destructor) |
デストラクタ | C++23 |
operator Pointer*() |
Pointer* への暗黙変換 |
C++23 |
operator void**() |
void** への暗黙変換 |
C++23 |
- C++23
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??