此页面中列出的具名要求,是 C++ 标准的规范性文本中使用的具名要求,用于定义标准库的期待。
某些具名要求在 C++20 中正在以概念语言特性进行形式化。在那之前,确保以满足这些要求的模板实参实例化标准库模板是程序员的重担。若不这么做,则可能导致非常复杂的编译器诊断。
注意,标准并未定义这个子类别中指定的各名字的具名要求。 它们是由核心语言定义的类型分类。将它们作为具名要求于此处包含只是为了一致性。 |
C++ 具名要求: TriviallyCopyable
这意味着该类没有虚函数或虚基类。
标量类型和可平凡复制 (TriviallyCopyable) 对象的数组也是可平凡复制 (TriviallyCopyable) 的。
C++ 具名要求: TrivialType
指定类型为平凡类型。
注意:标准中并没有定义具有这个名字的具名要求。这是核心语言所定义的一种类型类别。将它作为具名要求包含于此只是为了保持一致性。
C++ 具名要求: StandardLayoutType
指定一个类型为标准布局类型。标准布局类型适用于与其他语言编写的代码交流。
注意:标准中并没有定义具有这个名字的具名要求。这是核心语言所定义的一种类型类别。将它作为具名要求包含于此只是为了保持一致性。
| (C++14 前) |
?不存在两个相同类型的(可能间接的)基类子对象
struct Q {};
struct S : Q { };
struct T : Q { };
struct U : S, T { }; // 并非标准布局类:有两个 Q 类型的基类子对象
所有非静态数据成员和位域都在同一类中声明(要么全在派生类中,要么全在某个基类中)
struct B { int i; }; // 标准布局类
struct C : B { }; // 标准布局类
struct D : C { }; // 标准布局类
struct E : D { char : 4; }; // 非标准布局类
|
见标准布局。
C++ 具名要求: PODType
指定类型为 POD(Plain Old Data,简旧数据)类型。这表示该类型与用于 C 程序语言的类型兼容,即能直接以其二进制形式与 C 库交互。
注意:标准中并没有定义具有这个名字的具名要求。这是核心语言所定义的一种类型类别。将它作为具名要求包含于此只是为了保持一致性。
此类型要求在 C++ 标准中已弃用。其所有使用都已被替换成更为斟酌过的类型要求,例如平凡类型 (TrivialType) 。 |
以下之一:
| (C++11 前) |
| (C++11 起) |