# std::holds_alternative

From cppreference.com
< cpp‎ | utility‎ | variant

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

Run this code

    #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

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

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/utility/variant/holds_alternative&oldid=91929"
Category:

- unconditionally noexcept

Hidden categories:

- Pages with unreviewed unconditional noexcept template
- Pages with unreviewed noexcept template