variant<int, double>s;
cout << sizeof(int) <<endl;//4
cout << sizeof(double) <<endl;//8
cout << sizeof(s) <<endl;//16,这里应该都会有字节对齐
//sizeof(s) = sizeof(int) + sizeof(double);
#include <iostream>
#include <variant>
using namespace std;
int main() {
try {
std::variant<int, double, std::string> v;
v = "123";
std::cout << std::get<std::string>(v) << std::endl;
v = 1.0;
std::cout << std::get<double>(v) << std::endl;
v = 10;
// return 指针
std::cout << *std::get_if<int>(&v) << std::endl;
std::cout << std::get<double>(v) << std::endl; // 类型错误,抛出
} catch (const std::bad_variant_access& e) {
std::cout << e.what() << std::endl;
}
return 0;
}
输出
123
1
10
std::get: wrong index for variant