С++ 17, устаревшие функции в стандартной библиотеке <memory>?

Я просто понимаю, что некоторые функции стандартной библиотеки Dynamic memory management были устарели на С++ 17. Пример: get_temporary_buffer:

template< class T >
std::pair< T*, std::ptrdiff_t > get_temporary_buffer( std::ptrdiff_t count );

Может кто-нибудь объяснить, почему? Могу ли я ожидать, что в С++ 20 будет альтернатива?

Ответ 1

В соответствии с предложение, которое обесценивает его:

Этот API будет считаться неполной мыслью, предложенной сегодня. В качестве функционального API в нем отсутствует безопасность исключений, если функция распределения утечек буфера, но мы не предлагаем никаких RAII-подобных оберток для обеспечения безопасного использования.

Было высказано предположение, что вся текущая реализация этого API фактически не обеспечивает более эффективное распределение, чем обычный оператор new, и, если это действительно так, мы должны серьезно подумать об отказе от этого средства. В противном случае мы, вероятно, должны завершить разработку с соответствующим классом защитника/оболочки и побудить поставщиков поставлять на упущенные возможности оптимизации.

Короче говоря, просто используйте new/delete. Или ваш собственный временный распределитель памяти; в зависимости от того, что лучше всего подходит для ваших нужд.