C++ 命名要求: EmplaceConstructible (自 C++11 起)
来自 cppreference.cn
指定可通过给定分配器,从给定的实参集合,在未初始化存储中构造此类型的对象。
[编辑] 要求
类型 T
若满足 EmplaceConstructible 到 容器 X
(其 value_type
与 T
相同) 且来自实参 args
,则在给定下列各项时:
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 修正了此要求以匹配现有实践。
[编辑] 参见
CopyInsertable | |
MoveInsertable |