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要件を満たすこと
適格要件
Smart
がshared_ptr
の特殊化の場合、プログラムは不適格となる。
メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | C++23 |
(destructor) |
デストラクタ | C++23 |
operator Pointer*() |
Pointer* への暗黙変換 |
C++23 |
operator void**() |
void** への暗黙変換 |
C++23 |
バージョン
言語
- C++23
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??