• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function template
    <variant>

    std::holds_alternative

    namespace std {
      template <class T, class... Types>
      constexpr bool holds_alternative(const variant<Types...>& x) noexcept;
    }
    

    概要

    variantオブジェクトが指定の候補型を現在保持しているかを判定する。

    要件

    • TTypes...内に一度だけ現れること。そうでない場合、プログラムは不適格となる

    戻り値

    TTypes...でのインデックスとx.index()が等値である場合にtrueを返し、そうでなければfalseを返す。

    #include <iostream>
    #include <variant>
    
    int main()
    {
      std::variant<int, char, double> v = 'a';
    
      if (std::holds_alternative<char>(v)) {
        std::cout << "vはchar型を現在保持している" << std::endl;
      }
    
      if (!std::holds_alternative<int>(v)) {
        std::cout << "vはint型を現在保持していない" << std::endl;
      }
    }
    

    出力

    vはchar型を現在保持している
    vはint型を現在保持していない
    

    バージョン

    言語

    • C++17

    処理系