Почему функции std :: allocator не поддерживаются в c ++ 17?
Спецификация c ++ 17 устарелаconstruct
а такжеdestroy
членыstd::allocator
объект. Рабочая группа предоставила обоснование для отказа от других функций-членовВотпод заголовком «Устаревшие избыточные члены std :: allocator».
Однако они не упоминают конкретно, почему эти два члена устарели или какова рекомендация для замены этой функциональности. Я предполагаю, что подразумевается использованиеstd::allocator_traits::construct
вместо.
Я немного запутался в том,construct
может на самом деле все еще необходимо в некоторых случаях, хотя из-заэтот комментарий оstd::allocator_traits::construct
Поскольку эта функция обеспечивает автоматический возврат к размещению new, функция-член construct () является необязательным требованием Allocator начиная с C ++ 11.
Для пользовательских распределителей (например, для памяти с выравниванием по страницам, используяmemalign
), будет отступать к размещениюnew
всегда выдает правильное поведение?