C++ 命名需求: EmplaceConstructible (自 C++11 起)
来自 cppreference.com
指定类型对象可以通过给定分配器在未初始化的存储器中从给定参数集中构造。
[编辑] 需求
如果在给定以下条件下,类型 T
可以在 Container X
(其 value_type
与 T
相同)中使用参数 args
进行 EmplaceConstructible,则该类型是可构造的。
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 之前,使用自定义的 construct
来构造 std::basic_string 元素是必需的,但所有实现都只使用默认机制。该要求已由 P1072R10 修正为与现有实践相匹配。
[编辑] 另请参阅
CopyInsertable | |
MoveInsertable |