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

履歴 編集

function template
<variant>

std::holds_alternative(C++17)

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

処理系