• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    variable
    <variant>

    std::variant_npos

    namespace std {
      inline constexpr std::size_t variant_npos = -1;
    }
    

    概要

    variant_nposは、候補型の無効なインデックス値を表す定数である。

    std::variantクラスは、0番目の候補型でデフォルト構築するため、通常の操作ではどの型も代入されない状態にはならない。ただし、valueless_by_exception()メンバ関数がtrueを返す例外的な状況ではどの型も代入されていない状態になる。

    そのような状況で、index()メンバ関数がこの値を返すようになる。

    #include <iostream>
    #include <variant>
    
    struct S { operator int() { throw 42; }};
    
    int main()
    {
      std::variant<float, int> v = 12.f;
      try {
        v.emplace<1>(S());
      }
      catch (...) {}
    
      if (v.index() == std::variant_npos) {
        std::cout << "empty" << std::endl;
      }
      else {
        std::cout << "not empty" << std::endl;
      }
    }
    

    出力

    empty
    

    バージョン

    言語

    • C++17

    処理系