最終更新日時: 2025年10月14日 14時41分25秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<memory>

# std::inout_ptr_t::コンストラクタ(C++23)

    explicit
    inout_ptr_t(Smart& smart, Args... args);  // (1) C++23
    constexpr explicit
    inout_ptr_t(Smart& smart, Args... args);  // (1) C++26

    inout_ptr_t(const inout_ptr_t&) = delete; // (2) C++23

## 概要

- (1) : `inout_ptr_t`オブジェクトの構築。
- (2) : コピーコンストラクタ。コピー不可。

## 効果

(1) : `inout_ptr_t`クラスの説明用メンバ変数`s`, `a`, `p`を下記の通り初期化する。

- `Smart&`型メンバ変数`s` : `smart`
- `tuple<Args...>`型メンバ変数`a` : `std::forward<Args>(args)...`
- `Pointer`型メンバ`p` :
  - `is_pointer_v<Smart>`が`true`ならば、`smart`
  - そうでなければ、`smart.get()`

## 備考

実装によっては`s.release()`を呼び出すかもしれない。 コンストラクタで`release`メンバ関数を呼び出さない場合は、デストラクタにて呼び出される。

## バージョン

### 言語

- C++23

### 処理系

- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??

## 関連項目

- `inout_ptr()`
- `(destructor)`
- `operator Pointer*`
- `operator void**`

## 参照

- P1132R8 out_ptr - a scalable output pointer abstraction
- P3037R6 `constexpr std::shared_ptr` and friends