Namespaces
Variants

std::allocator<T>::construct

来自 zh.cppreference.net
 
 
内存管理库
分配器
内存资源
未初始化存储 (直到 C++20*)
垃圾回收器支持 (直到 C++23)
 
 
定义于头文件 <memory>
void construct( pointer p, const_reference val );
(1) (直到 C++11)
template< class U, class... Args >
void construct( U* p, Args&&... args );
(2) (自 C++11 起)
(在 C++17 中弃用)
(在 C++20 中移除)

构造一个 T 类型的对象,位于 p 指向的已分配但未初始化的存储中,使用全局布置 new。

1) 调用 ::new((void*)p) T(val).
2) 调用 ::new((void*)p) U(std::forward<Args>(args)...).

参数

p - 指向已分配未初始化存储的指针
val - 用作拷贝构造函数参数的值
args... - 使用的构造函数参数

缺陷报告

下列行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。

缺陷报告 适用标准 发布时行为 正确行为
LWG 402 C++98 若存在 T :: operator new ,程序可能不符合规范 改用全局替换 new 操作符

参见

[static]
在已分配的存储中构造对象
(函数模板)
在给定地址创建对象
(函数模板)
分配函数
(函数)