命名空间
变体
操作

C++ 命名要求: EmplaceConstructible (自 C++11 起)

来自 cppreference.cn
 
 
C++ 命名要求
基本
类型属性
全库范围




Container(容器)
容器元素
EmplaceConstructible(可就地构造)
(C++11)
迭代器 (Iterator)
流 I/O
格式化器
随机数
并发
(C++11)
范围
多维视图
其他

 

指定给定类型的对象可以通过给定的分配器,在未初始化的存储中,从给定的一组参数构造。

[编辑] 要求

如果给定以下条件,类型 T 是可 就地构造 (EmplaceConstructible)容器 (Container) X (其 value_typeT 相同) 的,从参数 args

A 一个分配器类型
m 一个 A 类型的左值
p 由容器准备的 T* 类型指针
args 零个或多个参数

其中 X::allocator_typestd::allocator_traits<A>::rebind_alloc<T> 相同,

以下表达式形式良好:

std::allocator_traits<A>::construct(m, p, args);

如果 X 不支持分配器或是一个 std::basic_string 特化,则该术语的定义就像 Astd::allocator<T> 一样,但不需要创建分配器对象,并且不会实例化 std::allocator 的用户定义特化。

[编辑] 注意

尽管直到 C++23 都要求在构造 std::basic_string 的元素时使用自定义的 construct,但所有实现都只使用了默认机制。此要求已通过 P1072R10 更正,以符合现有实践。

[编辑] 另请参阅

CopyInsertable(可复制插入)
MoveInsertable(可移动插入)