С какой целью мне следует использовать 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
?
Один вариант использования был предложен в Dr. Dobb's Journal, 1 июля 1996 г. для реализации алгоритмов:
Если буфер не может быть выделен или он меньше запрошенного, алгоритм по-прежнему работает правильно, он просто замедляется.
std::get_temporary_buffer
будет устаревшим в C ++ 17. - person Deqing   schedule 26.07.2016