Я реализую свою собственную версию контейнеров, соответствующих стандартам. Я прочитал следующее. В нем говорится, что элементы следует уничтожать с помощью распределителя уничтожения. Означает ли это, что контейнер должен вызывать деструктор элементов, даже если это тривиально? Моя интерпретация такова: сначала нам нужно вызвать деструктор. Если да, то мы должны использовать распределитель-разрушитель. В противном случае нам также не нужно вызывать уничтожение распределителя. Согласно этой интерпретации, мы можем пропустить вызов уничтожения распределителя для элементов с тривиальным деструктором. Это может привести к оптимизации контейнеров последовательностей.
Из стандарта cpp20:
Для компонентов, на которые распространяется действие этого подпункта, которые объявить
, объекты, хранящиеся в этих компонентах, должны быть
созданы с использованием функции
и
уничтожается с помощью функции
(20.10.9.2), где U — это либо allocator_type::value_type, либо
внутренний тип, используемый контейнером.
Подробнее здесь:
https://stackoverflow.com/questions/792 ... containers