std::allocator<T>::construct
C++11 起,C++17 中弃用,C++20 中移除
template< class U, class... Args >
void construct( U* p, Args&&... args );
直到 C++11
void construct( pointer p, const_reference val );
在由p
指向的已分配的未初始化存储中,使用全局定位 new 来构造一个类型为T
的对象。
- 调用
::new((void*)p) T(val)
。 - 调用
::new((void*)p) U(std::forward<Args>(args)...)
。
参数
p
- 指向已分配的未初始化存储的指针
val
- 用作复制构造函数参数的值
args...
- 要使用的构造函数参数
返回值
(无)
缺陷报告
以下改变行为的缺陷报告已追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 发布时的行为 | 正确行为 |
---|---|---|---|
LWG 402 | C++98 | 如果 T::operator new 存在,程序可能格式错误 | 使用全局替换 new |