Шаблон класса std::variant представляет типобезопасное объединение. Экземпляр std::variant в любой момент времени либо содержит значение одного из своих альтернативных типов, либо не имеет значения.
sizeof(std::variant<float, int32_t, double>) == 16
Но если это союз, то почему он занимает так много места?
struct T1 {
float a;
int32_t b;
double c;
};
struct T2 {
union {
float a;
int32_t b;
double c;
};
};
Вариант имеет тот же размер, что и структура
sizeof(T1) == 16
sizeof(T2) == 8
Я бы ожидал, что размер объединения плюс 4 байта для хранения, какой тип активен.
/std:c++latest- person Iter Ator   schedule 08.08.2017