C++ 標準によると、次のようになります。
標準レイアウト クラスは、次のようなクラスです。
— 非標準レイアウト クラス (またはそのような型の配列) 型または参照型の非静的データ メンバーはありません。
参照メンバーを持つクラスが標準レイアウト クラスの定義に含まれるのを妨げている参照のプロパティはどれですか?
C++ 標準によると、次のようになります。
標準レイアウト クラスは、次のようなクラスです。
— 非標準レイアウト クラス (またはそのような型の配列) 型または参照型の非静的データ メンバーはありません。
参照メンバーを持つクラスが標準レイアウト クラスの定義に含まれるのを妨げている参照のプロパティはどれですか?
標準レイアウト クラスとは、メモリ内の特定の型に対して適切に定義されたレイアウトを持つことです。C++ では、参照はオブジェクトではないため、実装には通常何らかの実装固有のストレージが必要ですが、準拠するプログラムによって明確に定義された方法でアクセスできるストレージはありません。
このため、標準レイアウトが必要なものに参照メンバーを含めることは意味がありません。
これについて言及しているC++メモリモデルに関するセクションの標準には、非規範的なメモがあります。
[ 注: 参照や仮想関数など、言語のさまざまな機能には、プログラムからはアクセスできないが実装によって管理される追加のメモリ位置が含まれる場合があります。—終わりのメモ]