在C++20中,POD的概念已被弃用,据称这是因为它是一个无意义的复合特性,既具有trivial和standard-layout特性。然而,在C++20草案中POD的定义并不完全是“既trivial又standard-layout”,而实际上是:
``` POD类是既是trivial又是standard-layout的类,并且没有类型为non-POD类(或其数组)的非静态数据成员。POD类型是标量类型、POD类、此类类型的数组或其中一个的cv限定版本。 ```
换句话说,一个POD类型不仅是既trivial又是standard-layout,而且还是递归地这样。
这个递归要求是否多余?换句话说,如果一个类型既是trivial又是standard-layout,那么它自动地递归地也是trivial和standard-layout吗? 如果答案是“否”,那么有哪些既是trivial又是standard-layout的类型不是POD呢?
``` POD类是既是trivial又是standard-layout的类,并且没有类型为non-POD类(或其数组)的非静态数据成员。POD类型是标量类型、POD类、此类类型的数组或其中一个的cv限定版本。 ```
换句话说,一个POD类型不仅是既trivial又是standard-layout,而且还是递归地这样。
这个递归要求是否多余?换句话说,如果一个类型既是trivial又是standard-layout,那么它自动地递归地也是trivial和standard-layout吗? 如果答案是“否”,那么有哪些既是trivial又是standard-layout的类型不是POD呢?