Это фича C++17, обеспечивающая типобезопасное объединение, позволяющее хранить и манипулировать значениями разных типов в одном объекте. Она является частью стандартной библиотеки C++ и определена в заголовке
<variant>.Шаблонный класс
std::variant похож на упрощенную версию union, но с дополнительной безопасностью типов и поддержкой различных операций.Основными функциями
std::variant являются index(), valueless_by_exception(), operator=, emplace.В этом примере мы создаем объект
var, который может содержать значения типов int, float или std::string. Мы присваиваем var различные значения и получаем их с помощью std::get.Однако если мы попытаемся получить значение, используя неправильный тип (например,
std::get<int>(var), когда вариант содержит std::string), это вызовет исключение std::bad_variant_access.
