【问题标题】:Why are unions which have members with differing access control not standard-layout?为什么具有不同访问控制的成员的工会不是标准布局?
【发布时间】:2015-05-30 14:25:27
【问题描述】:

§9.0

7。一个类 S 是一个标准布局类,如果它:

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

8 一种 标准布局结构 是一个标准布局类,用 类键 结构 或者 类键 班级 . 一种 标准布局联合 是一个标准布局类,用 类键 联盟 .

AFAICT,§9.0.7.3 的存在是因为 §9.2.13

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 2016-07-21
      • 1970-01-01
      • 2021-09-27
      相关资源
      最近更新 更多