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++: ??