【发布时间】: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