Namespaces
Variants

C++ named requirements: EmplaceConstructible (since C++11)

From cppreference.net
C++ named requirements

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

要求

当类型 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 修正以符合现有实践。

另请参阅

可复制插入
可移动插入