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