Re[2]: union требует конструктор, зачем так сделано?
От: Sm0ke Россия ksi
Дата: 07.06.23 16:33
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Массив std::optional<T> не нравится? Хочется сэкономить на булевых флажках? Или нужна непрерывность адресов элементов?


Непрерывность не важна. Флажки занимают память, плюс будут вызваны конструкторы у эдементов optional

К>Ну заведи юнион, у которого будет первый член с тривиальным конструктором — какой-нибудь std::monostate dummy


К>
К>union TrulyUnion {
К>  std::monostate dummy = {};
К>  T data;
К>  .....
К>};
К>


В TrulyUnion всё равно придётся вводить конструктор, ведь есть хотя бы один member с не тривиальным. И деструктор тоже, ведь T с ним.

union TrulyUnion {
  std::monostate dummy;
  T data;

  TrulyUnion() : dummy{} {}
  ~TrulyUnion() {}
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.