Introducción
Última actualización: 6 de agosto de 2020
Como analizamos en un post anterior, la plantilla de clase std::variant<>, incluida por vez primera en el estándar C++17, proporciona la funcionalidad típica de las uniones de C, si bien garantizando la seguridad de tipos. Así, una instancia de std::variant<> podrá contener, en un instante dado, un objeto perteneciente a uno de varios tipos alternativos permitidos, o ningún valor en caso de error. Por ejemplo, una instancia de std::variant<char, int, double> permitirá almacenar un carácter char, un entero int o un double, a conveniencia del programador y sin incurrir en alojamientos dinámicos de memoria.
Puedes consultar algunos ejemplos de uso simples en la siguiente referencia:
https://en.cppreference.com/w/cpp/utility/variant