对码当歌,猿生几何?

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

#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)