std::variant — type-safe union. Holds one of several specified types.
1#include <variant>2#include <string>34std::variant<int, double, std::string> v;56v = 42; // int7v = 3.14; // double8v = "hello"; // string910// Access11std::cout << std::get<int>(v); // 4212std::cout << std::get<2>(v); // string13std::cout << std::get<std::string>(v); // hello1415// Safe access16if (auto* p = std::get_if<int>(&v)) {17 std::cout << *p;18}1920// Visit21std::visit([](auto&& arg) {22 std::cout << arg << "\n";23}, v);
Properties: