# std::holds_alternative

< cpp‎ | utility‎ | variant

定义于头文件 `<variant>` |  |
template< class T, class... Types > constexpr bool holds_alternative( const std::variant<Types...>& v ) noexcept; |  | (C++17 起)

检查 `variant` `v` 是否保有可选项 `T` 。若 `T` 不在 `Types...` 准确出现一次，则此调用为病式。

### 参数

v | - | 要检验的 `variant`

### 返回值

若 `variant` 当前保有可选项 `T` 则为 `true` ，否则为 `false` 。

### 示例

    #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';
    }

输出：

    variant holds int? false
    variant holds string? true

### 参阅

index | 返回 `variant` 所保有可选项的零基下标 (公开成员函数)
std::get(std::variant) (C++17) | 以给定索引或类型（若类型唯一）读取 `variant` 的值，错误时抛出异常 (函数模板)