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

履歴 編集

class
<variant>

std::bad_variant_access(C++17)

namespace std {
  class bad_variant_access : public exception;
}

概要

std::bad_variant_accessは、std::variantオブジェクトが現在保持していない候補型に不正アクセスした際に発生する例外型である。

メンバ関数

名前 説明 対応バージョン
bad_variant_access() noexcept; デフォルトコンストラクタ C++17
const char* what() const noexcept override; エラー理由となる実装依存文字列 C++17

#include <iostream>
#include <variant>
#include <string>

int main()
{
  std::variant<int, char, std::string> v = 3;

  // vは0番目の型 (int) を保持しているが、2番目の型 (string) を取り出そうとした
  try {
    std::string& x = std::get<2>(v);
  }
  catch (std::bad_variant_access& e) {
    std::cout << "error : " << e.what() << std::endl;
  }

  // vはint型を保持しているが、string型を取り出そうとした
  try {
    std::string& x = std::get<std::string>(v);
  }
  catch (std::bad_variant_access& e) {
    std::cout << "error : " << e.what() << std::endl;
  }
}

出力例

error : Unexpected index
error : Unexpected index

バージョン

言語

  • C++17

処理系