variant
variant 是 C++17 所提供的变体类型。
实例
#include <iostream>
#include <string>
#include <variant>
using namespace std;
int main()
{
variant<int, double, string> v; // v == 0
auto f = [](auto x) {cout << x << endl;};
v = 1;
bool has_int = holds_alternative<int>(v);
bool has_double = holds_alternative<double>(v);
cout << v.index() << has_int << has_double << get<0>(v) << *get_if<int>(&v); visit(f, v); // 010111
v = 2.0;
cout << v.index() << (get_if<int>(&v) == nullptr) << get<1>(v) << get<double>(v); visit(f, v); // 11222
v = "a";
cout << v.index() << get<2>(v) << get<string>(v); visit(f, v); // 2aaa
}