W3cubDocs

/C++

std::holds_alternative

Defined in header <variant>
template <class T, class... Types>
constexpr bool holds_alternative(const std::variant<Types...>& v)
(since C++17)

Checks if the variant v holds the alternative T. The call is ill-formed if T appears more than once in Types...

Parameters

v - variant to examine

Return value

true if the variant currently holds the alternative T, false otherwise.

Exceptions

noexcept specification:
noexcept

Example

#include <variant>
#include <string>
#include <iostream>
int main()
{
    std::variant<int, std::string> v = "abc";
    std::cout << std::boolalpha
              << "variant holds int? "
              << std::holds_alternative<int>(v) << '\n'
              << "variant holds string? "
              << std::holds_alternative<std::string>(v) << '\n';
}

Output:

variant holds int? false
variant holds string? true

See also

returns the zero-based index of the alternative held by the variant
(public member function)
reads the value of the variant given the index or the type (if the type is unique), throws on error
(function template)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/utility/variant/holds_alternative