C++ · Intermediário · Inglês · Técnico
std variant
União com tipo seguro do C++17 que guarda um valor de um dos tipos listados. Sabe qual tipo está ativo; consulta-se com std::get, holds_alternative ou std::visit.
Onde usar
Usado para modelar resultados alternativos, como número ou texto, sem hierarquia de classes. Com std::visit, o compilador exige tratar todos os tipos.
Em código
std::variant<int, std::string> v = 42;
v = std::string("oi");
std::visit([](auto&& x) {
std::cout << x;
}, v);Exemplos
Model it as a std variant of int and string.
Modele como um std variant de int e string.
std visit forces us to handle every alternative.
O std visit nos força a tratar todas as alternativas.
Cuidado
Não confunda com union: o variant sabe o tipo ativo e destrói o valor corretamente; std::get no tipo errado lança bad_variant_access.
Sinônimos
união segura
Antônimos
union