§9.0
7. 次の場合、クラス S は標準レイアウト クラスです。
(7.3) すべての非静的データメンバーに対して同じアクセス制御 (第 11 節) を持ち、
8 標準レイアウト構造体は、class-key struct または class-key class で定義された標準レイアウト クラスです。標準レイアウト共用体は、クラスキー共用体で定義された標準レイアウト クラスです。
AFAICT、§9.2.13のために§9.0.7.3が存在します
13 同じアクセス制御 (第 11 節) を持つ (非共用体) クラスの非静的データ メンバーは、後のメンバーがクラス オブジェクト内でより高いアドレスを持つように割り当てられます。アクセス制御が異なる非静的データメンバーの割り当て順序は規定されていません(第 11 節)。実装のアライメント要件により、隣接する 2 つのメンバーが互いの直後に割り当てられない場合があります。仮想関数 ( 10.3 ) および仮想基本クラス ( 10.1 ) を管理するためのスペースの要件も同様です。
ただし、ユニオンのすべての (非静的データ) メンバーは同じアドレスを持っているため、これはユニオンには当てはまらないようです。これは規格の欠陥ですか?それとも、私が見ていないのには説得力のある理由がありますか?