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