【发布时间】:2020-03-05 10:09:30
【问题描述】:
在 C++20 中,POD 的概念已被弃用,据说是因为它是琐碎和标准布局的无意义复合特征。然而,C++20 草案中的the definition of POD 并不完全是“既平凡又标准布局”;实际上是:
POD 类是一个既是普通类又是标准布局类的类,并且没有非 POD 类(或其数组)类型的非静态数据成员。 POD 类型是标量类型、POD 类、此类类型的数组或其中一种类型的 cv 限定版本。
换句话说,POD 类型不仅是普通布局和标准布局,而且是递归的。
这个递归要求是多余的吗?换句话说,如果一个类型既是平凡又是标准布局,那么它是否也会自动递归平凡和标准布局?如果答案是“否”,那么标准布局的普通类型不能成为 POD 的示例是什么?
【问题讨论】:
标签: c++ language-lawyer c++20 standard-layout