§9.0
7. S 类是标准布局类,如果它:
(7.3) 对所有非静态数据成员具有相同的访问控制(第 11 条),
8 标准布局结构是使用 class-key struct 或 class-key class 定义的标准布局类。标准布局联合是使用类键联合定义的标准布局类。
AFAICT,§9.0.7.3 的存在是因为 §9.2.13
分配具有相同访问控制(第 11 条)的(非联合)类的 13 个非静态数据成员,以便后面的成员在类对象中具有更高的地址。未指定具有不同访问控制的非静态数据成员的分配顺序(第 11 条)。实现对齐要求可能会导致两个相邻的成员不会被立即分配;管理虚拟功能(10.3)和虚拟基类(10.1)的空间需求也是如此。
但是,这似乎不适用于联合,因为联合的所有(非静态数据)成员都具有相同的地址。这是标准的缺陷吗?还是有一些令人信服的理由为什么我没有看到?