最終更新日時: 2024年06月11日 22時45分38秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<optional>

# std::optional::reset(C++17)

    void reset() noexcept;           // (1) C++17
    constexpr void reset() noexcept; // (1) C++23

## 概要

有効値を保持していない状態にする。

## 効果

有効値を保持している場合、型`T`が非トリビアルなデストラクタを持っているならデストラクタを呼び出す。有効値を保持していない場合は、なにもしない。

## 事後条件

`*this`が有効値を保持していないこと

## 備考

この関数は、スマートポインタとの統一インタフェースのためにある (例として、`std::shared_ptr`クラスに`reset()`メンバ関数がある)。

効果としては、`std::optional`クラスのオブジェクトに`std::nullopt`を代入することと、等価である。

## 例

    #include <cassert>
    #include <optional>

    int main()
    {
      // 有効値3を代入
      std::optional<int> p = 3;

      // 有効値を保持していない状態にする
      p.reset();
      assert(!p);
    }

### 出力

## バージョン

### 言語

- C++17

### 処理系

- Clang: 4.0.1 ✅
- GCC: 7.2 ✅
- ICC: ??
- Visual C++: ??

## 関連項目

- `std::vector`クラスのデストラクタ
- `std::is_trivially_destructible`
- P2231R1 Missing `constexpr` in `std::optional` and `std::variant`