• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    class template
    <memory>

    std::inout_ptr_t

    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

    処理系

    関連項目

    参照