Namespaces
Variants

std::allocator_traits<Alloc>:: construct

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
定义于头文件 <memory>
template < class T, class ... Args >
static void construct ( Alloc & a, T * p, Args && ... args ) ;
(C++11 起)
(C++20 起为 constexpr)

如果可能,通过调用 a. construct ( p, std:: forward < Args > ( args ) ... ) , 在由 p 指向的已分配未初始化存储中构造一个类型为 T 的对象。

如果上述操作不可行(例如 Alloc 没有成员函数 construct() ),则调用

:: new ( static_cast < void * > ( p ) ) T ( std:: forward < Args > ( args ) ... )

(C++20 前)

std:: construct_at ( p, std:: forward < Args > ( args ) ... )

(C++20 起)

目录

参数

a - 用于构造的分配器
p - 指向未初始化存储的指针,将在该位置构造 T 对象
args... - 传递给 a. construct ( ) placement-new (C++20 前) std::construct_at() (C++20 起) 的构造函数参数

返回值

(无)

注释

该函数被标准库容器在插入、复制或移动元素时使用。

由于此函数提供了自动回退到 placement new 的功能,成员函数 construct() 自 C++11 起成为可选的 Allocator 要求。

参见

分配函数
(函数)
(until C++20)
在已分配存储中构造对象
( std::allocator<T> 的公开成员函数)
在给定地址创建对象
(函数模板)