C++ named requirements: TriviallyCopyable (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
注意:标准并未定义以此命名的具名要求。这是由核心语言定义的类型类别。此处将其作为具名要求收录仅为保持一致性。
目录 |
要求
以下类型统称为 可平凡复制类型 :
注释
通常来说,对于任何可平凡复制类型
T
及其对象
obj1
,可以将
obj1
的底层字节复制到
char
数组、
unsigned
char
数组、
std::byte
(C++17 起)
数组,或复制到
T
的另一个独立对象
obj2
中。
obj1
和
obj2
均不得为可能重叠的子对象。
如果将
obj1
的底层字节复制到此类数组中,然后将结果内容复制回
obj1
,
obj1
将保持其原始值。如果将
obj1
的底层字节复制到
obj2
中,
obj2
将持有
obj1
的值。
底层字节可以通过 std::memcpy 或 std::memmove 进行复制,只要不访问任何活跃的volatile对象。
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 应用于 | 发布时的行为 | 正确行为 |
|---|---|---|---|
| CWG 1734 | C++11 | C++03 POD 带有被删除的非平凡赋值运算符时不是平凡类型 | 允许被删除的构造函数/运算符 |
| CWG 2094 | C++11 | volatile 标量类型不是平凡可复制的 ( CWG 1746 ) | 改为平凡可复制 |
参见
|
(C++11)
|
检查类型是否为可平凡复制的
(类模板) |