C++ 命名要求: EmplaceConstructible (自 C++11 起)
来自 cppreference.cn
指定给定类型的对象可以通过给定的分配器,在未初始化的存储中,从给定的一组参数构造。
[编辑] 要求
如果给定以下条件,类型 T
是可 就地构造 (EmplaceConstructible) 到 容器 (Container) 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(可移动插入) |