С какой целью я должен использовать std::get_temporary_buffer
? Стандарт гласит следующее:
Получает указатель на хранилище, достаточное для хранения до n смежных T объектов.
Я думал, что буфер будет размещен в стеке, но это не так. Согласно стандарту C ++ этот буфер на самом деле не временный. Какие преимущества у этой функции перед глобальной функцией ::operator new
, которая тоже не создает объекты. Правильно ли я, что следующие утверждения эквивалентны?
int* x;
x = std::get_temporary_buffer<int>( 10 ).first;
x = static_cast<int*>( ::operator new( 10*sizeof(int) ) );
Эта функция существует только для синтаксического сахара? Почему temporary
в его названии?
Один вариант использования был предложен в журнале доктора Добба от 1 июля 1996 г. для реализации алгоритмов:
Если буфер не может быть выделен или он меньше запрошенного, алгоритм по-прежнему работает правильно, он просто замедляется.
std::get_temporary_buffer
в C ++ 17 не рекомендуется.