Здравствуйте, _NN_, Вы писали:
_NN>Это как std::optional только без маркировки если есть значение или нет?
_NN>Типа https://github.com/akrzemi1/markable ?
Скорее как std::variant но без хранения значения index, т.к. что за тип лежит внутри variant-а по косвенным признакам снаружи знает объект, который этим variant-ом и владеет. Собственно, владелец отвечает и за корректное удаление, и за корректное копирование/перемещение.
_NN>Кстати memcpy не всегда можно использовать если у нас тип не тривиально копируемый.
Угу.
_NN>А placement new не сработает если нет конструктора копирования.
_NN>В общем, для общего случая там работы хватить
К счастью, общего случая и не нужно. Так что наличие конструкторов для нетривиальных типов можно жестко потребовать.