C++ named requirements: EmplaceConstructible (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
指定该类型的对象可以通过给定的分配器在未初始化存储中从一组给定参数构造。
要求
当类型
T
满足以下条件时,称其可从参数
args
被
原位构造
到
X
容器(其
value_type
与
T
相同)中:给定
A
|
分配器类型 |
m
|
类型为
A
的左值
|
p
|
由容器准备的
T*
类型指针
|
args
|
零个或多个参数 |
其中
X::allocator_type
等同于
std::
allocator_traits
<
A
>
::
rebind_alloc
<
T
>
,
以下表达式是合法的:
std::allocator_traits<A>::construct(m, p, args);
如果
X
不具备分配器感知能力,或是
std::basic_string
的特化版本,则该术语的定义将视
A
为
std::allocator<T>
,但无需实际创建分配器对象,且不会实例化用户自定义的
std::allocator
特化版本。
注释
尽管在 C++23 之前要求构造
std::basic_string
元素时必须使用自定义的
construct
,但所有实现都仅使用了默认机制。该要求已通过
P1072R10
修正以符合现有实践。
另请参阅
| 可复制插入 | |
| 可移动插入 |