зачем гадать, если можно заглянуть в шапку. я многому научился (плохо), читая заголовки стандартной библиотеки. Это зависит от реализации, конечно
н класса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 байта для хранения, какой тип активен.