Здравствуйте, so5team, Вы писали:
S>PS. std::variant не используется потому, что содержимое data_item_t формируется так, чтобы там не было разных лишних данных на современных 64-х битовых платформах. Грубо говоря, сейчас размер data_item_t и выравнивание для него кратны 8. Меняешь my_union на std::variant, появляется, как минимум, лишний байт, который увеличивает размер data_item_t еще на 8 байт (с учетом выравнивания). А т.к. этих data_item_t десятки миллионов, минимум, то лишние 8 байт ведут к десяткам лишних мегабайт занятой ОП.
Кстати, тогда, лучше использовать обычный массив так как нет гарантий на то, как выглядит std::array.
Скорее всего, и обычно это так, он равносилен массиву, но нет требований стандарта.