C++ 具名要求:可复制插入 (CopyInsertable) (C++11 起)

来自cppreference.com
< cpp‎ | named req


 
 
C++ 具名要求
 

指定该类型的对象能以给定分配器原位复制构造。

要求

给定以下类型、值和表达式:

类型定义
T对象类型
A分配器类型
X满足以下所有条件的容器类型:
定义
mA 类型左值
pT* 类型指针
表达式定义
v表示 T / const T 类型左值或 const T 类型右值的表达式
exprstd::allocator_traits<A>::construct(m, p, v)

如果满足以下所有条件,那么 T 可复制插入 (CopyInsertable)X 中:

注解

如果 Astd::allocator<T>,那么就会如同用 ::new((void*)p) T(v)(C++20 前)std::construct_at(p, v)(C++20 起) 调用布置 new

尽管 C++23 前要求在构造 std::basic_string 的元素时使用定制的 construct,但所有实现都使用默认机制。P1072R10 更正了该要求以匹配既存实践。

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告应用于出版时的行为正确行为
LWG 2177C++11expr 进行求值没有任何后条件添加后条件
LWG 3957C++11v 可以表示 T 类型右值已排除