我应该出于什么目的使用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
它的名字?
1996年7月1日在Dobb博士的日记中提出了一个用例来实现算法:
如果没有缓冲区可以分配,或者小于请求的缓冲区,则该算法仍然可以正常工作,只会减慢速度。
std::get_temporary_buffer
将在C ++ 17中弃用。