Namespaces
Variants

C++ named requirements: TriviallyCopyable (since C++11)

From cppreference.net
C++ named requirements

注意:标准并未定义以此命名的具名要求。这是由核心语言定义的类型类别。此处将其作为具名要求收录仅为保持一致性。

目录

要求

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

注释

通常来说,对于任何可平凡复制类型 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 ) 改为平凡可复制

参见

检查类型是否为可平凡复制的
(类模板)