为什么拥有不同访问控制成员的工会不是标准布局?

时间:2015-03-26 14:11:28

标签: c++ language-lawyer unions standard-layout

§9.0

  

7。如果是,则类S是标准布局类:

     

(7.3)   具有相同的访问控制(条款   11   )对于所有非静态数据成员,

     

8   一个   标准布局结构   是一个用它定义的标准布局类   类的关键字   结构   或者   类的关键字   类   。   一个   标准布局联合   是一个用它定义的标准布局类   类的关键字   联盟   

AFAICT,§9.0.7.3因§9.2.13

而存在
  

13   具有相同访问控制的(非联合)类的非静态数据成员(子句   11   )这样分配   后来的成员在类对象中有更高的地址。 非静态数据的分配顺序   具有不同访问控制的成员未指定(条款   11   )。实施对齐要求   可能导致两个相邻成员不能立即分配;可能要求   用于管理虚拟功能的空间(   10.3   )和虚拟基类(   10.1   )。

但是,这似乎不适用于联合,因为联合的所有(非静态数据)成员具有相同的地址。这是标准中的缺陷吗?还是有一些令人信服的理由为什么我没有看到?

1 个答案:

答案 0 :(得分:0)

在我看来,在union案例中允许多个访问说明符的好处并没有被不一致的成本和引入的其他词语所抵消。