std::variant's: Intelligent C++ Unions