Re[5]: Placement new для инициализации примитивного типа в с
От: _NN_  
Дата: 07.10.25 17:58
Оценка:
Здравствуйте, 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.
Скорее всего, и обычно это так, он равносилен массиву, но нет требований стандарта.
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.