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