最終更新日時: 2025年07月09日 00時33分39秒 (JST)
Akira Takahashi が更新

履歴 編集

class
<optional>

# std::bad_optional_access(C++17)

    namespace std {
      class bad_optional_access : public exception;
    }

## 概要

`std::bad_optional_access`は、`std::optional`クラスのオブジェクトの無効な値にアクセスした場合に発生する例外である。

## メンバ関数

名前 | 説明 | 対応バージョン
--- | --- | ---
(constructor) | コンストラクタ | C++17
(destructor) | デストラクタ | C++17
`operator=` | 代入演算子 | C++17
`what` | エラー理由を取得する | C++17

## 例

    #include <iostream>
    #include <optional>

    int main()
    {
      std::optional<int> p;
      try {
        p.value(); // 有効値を保持していないのに、有効値を取り出そうとした
      }
      catch (std::bad_optional_access& e) {
        std::cout << "exception : " << e.what() << std::endl;
      }
    }

### 出力例

    exception : bad optional access

## バージョン

### 言語

- C++17

### 処理系

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

## 参照

- LWG Issue 2806. Base class of `bad_optional_access`