std::get_if

来自cppreference.com
< cpp‎ | utility‎ | variant
 
 
 
 
定义于头文件 <variant>
(1) (C++17 起)
template <std::size_t I, class... Types>

constexpr std::add_pointer_t<
    std::variant_alternative_t<I, std::variant<Types...>>

> get_if(std::variant<Types...>* pv) noexcept;
template <std::size_t I, class... Types>

constexpr std::add_pointer_t<
    const std::variant_alternative_t<I, std::variant<Types...>>

> get_if(const std::variant<Types...>* pv) noexcept;
(2) (C++17 起)
template <class T, class... Types>
constexpr std::add_pointer_t<T> get_if(std::variant<Types...>* pv) noexcept;
template <class T, class... Types>
constexpr std::add_pointer_t<const T> get_if(const std::variant<Types...>* pv) noexcept;
1) 基于下标的不抛出访问器:若 pv 不是空指针且 pv->index() == I ,则返回指向存储于 pv 所指向的 variant 中的值的指针。否则,返回空指针值。若 I 不是 variant 的合法下标,则此调用为病式。
2) 基于类型的不抛出访问器:等价于 (1) ,其中 ITTypes... 中的零基下标。若 T 不是 Types... 中的唯一存在的元素,则此调用为病式。

目录

[编辑] 参数

I - 要查找的下标
Type - 要查找的类型
pv - 指向 variant 的指针

[编辑] 返回值

指向存储于被指向的 variant 中值的指针,错误时为空指针。

[编辑] 示例

#include <variant>
#include <iostream>
 
int main()
{
    std::variant<int, float> v{12};
 
    if(auto pval = std::get_if<int>(&v))
      std::cout << "variant value: " << *pval << '\n'; 
    else 
      std::cout << "failed to get value!" << '\n'; 
}

输出:

variant value: 12

[编辑] 参阅

读取 variant 给定下标或类型的值(若类型唯一),错误时抛出异常
(函数模板) [编辑]