命名空间
变体
操作

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

来自 cppreference.cn
< cpp‎ | named req
 
 
C++ 命名要求
 

指定可通过给定分配器,从给定的实参集合,在未初始化存储中构造此类型的对象。

[编辑] 要求

类型 T 若满足 EmplaceConstructible容器 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