__is_standard_layout
型特性関数(C++11):インデックス への移動
カテゴリ
型特性関数
構文
bool __is_standard_layout(typename T)
T が標準レイアウト型である場合にのみ true が返ります。
T が不完全な型の場合、エラーになります。
標準レイアウト クラスは作業ドラフトの第 9 章で定義されています。
標準レイアウト型は次のとおりです。
- スカラ型
- 標準レイアウト型の配列
- 標準レイアウト クラス型
標準レイアウト クラスは次の特徴があるクラスです。
- 標準レイアウト型以外に非静的データ メンバがない
- すべての非静的データ メンバに対して同じアクセス制御(すべて public または private など)
- 標準レイアウト クラス以外に基底クラスがない
- 仮想関数と仮想基底クラスがない
- 任意の非静的データがある継承ツリーの DAG に複数のクラスがない
- 最初の(存在する場合)非静的データ メンバと同じ型の基底クラスがない
標準レイアウト型は、標準で複数の特別な句をトリガします。コード生成と最適化、または単に一部の構造の定義が取り消されるかどうかに影響します。 特に、標準レイアウト クラスは空のベース最適化が必要です。
標準レイアウト型は、この型関数が最初に導入された時点で POD/標準レイアウトの改良がなかった場合の、2003 標準の POD の一般化であることに注意してください。