C++ 具名要求:可复制插入 (CopyInsertable)
来自cppreference.com
指定该类型的实例能以给定分配器原位复制构造。
要求
以下情况下,类型 T
可复制插入 (CopyInsertable) 进容器 X
(其 value_type
等同于 T
):若 T
可移动插入 (MoveInsertable) 进 X
,且给定
A
|
分配器类型 |
m
|
A 类型的左值
|
p
|
容器所准备的 T* 类型的指针
|
v
|
(可为 const 的)T 类型的表达式
|
其中 X::allocator_type
等同于 std::allocator_traits<A>::rebind_alloc<T>,
下列表达式良构:
std::allocator_traits<A>::construct(m, p, v);
并且在求值后,*p 的值等价于 v 的值。而 v 的值不更改。
若 X
非知分配器或为 std::basic_string 特化,则如同 A
就是 std::allocator<T> 一样进行定义,但并不需要创建分配器对象,且不会实例化用户定义的 std::allocator 的特化。
注解
若 A
是 std::allocator<T>,则这将调用布置 new,如同用 ::new((void*)p) T(v) (C++20 前)std::construct_at(p, v) (C++20 起)。
尽管 C++23 前要求在构造 std::basic_string 的元素时使用定制的 construct
,所有实现都使用默认机制。P1072R10 更正了该要求以匹配既存实现。