1. std::visit函数的定义
std::visit通常用于访问 std::variant 类型的对象。std::variant 是 C++17 引入的一种类型安全的联合体,可以存储多个类型中的一个。visit 函数允许你通过一个访问者(visitor)来访问 std::variant 中存储的值,而不需要显式地检查存储的类型。
2. 示例
#include <variant>
#include <iostream>
std::variant<int, std::string> var = 42;
std::visit([](auto&& arg) {
std::cout << arg << std::endl;
}, var);
3. 解释:
- std::variant:
std::variant<int, std::string> var = 42;
定义一个 std::variant 对象 var,它可以存储 int 或 std::string 类型的值。这里初始化为 42。 - std::visit:std::visit 接受一个访问者(visitor)和一个或多个 std::variant 对象。访问者是一个可调用对象(如 lambda 表达式),它定义了如何处理 std::variant 中存储的值。
- Lambda 表达式:
[](auto&& arg) { std::cout << arg << std::endl; }
,这是一个泛型 lambda 表达式,它接受一个参数 arg,并将其输出到标准输出。auto&& 使得 lambda 表达式可以接受任何类型的参数。