命名空间
变体
操作

C++ 命名需求: TriviallyCopyable (自 C++11 起)

来自 cppreference.com
 
 
C++ 命名需求
 

注意:标准没有定义具有此名称的命名需求。这是一种由核心语言定义的类型类别。它仅出于一致性才被作为命名需求包含在这里。

内容

[编辑] 要求

以下类型统称为可平凡复制类型

[编辑] 注释

通常,对于任何可平凡复制类型 TT 的对象 obj1obj1 的基础字节可以被复制到 char 数组,或 unsigned char,或 std::byte(自 C++17 起) 或复制到 obj2,即 T 的另一个不同对象。obj1obj2 都不能是潜在的重叠子对象。

如果将 obj1 的基础字节复制到这样一个数组中,然后将结果内容复制回 obj1,则 obj1 将保存其原始值。如果将 obj1 的基础字节复制到 obj2 中,则 obj2 将保存 obj1 的值。

可以通过 std::memcpystd::memmove 复制基础字节,只要没有访问活动易变对象。

[编辑] 缺陷报告

以下更改行为的缺陷报告被追溯应用于之前发布的 C++ 标准。

DR 应用于 发布的行为 正确行为
CWG 1734 C++11 带有已删除非平凡赋值的 C++03 POD 不是平凡的 允许已删除的构造函数/运算符
CWG 2094 C++11 易变标量类型不是可平凡复制的 (CWG 1746) 使其可平凡复制

[编辑] 另请参见

检查类型是否可平凡复制
(类模板) [编辑]