З якою метою я повинен використовувати 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.