C++ の名前付き要件: StandardLayoutType (C++11 以降)
From cppreference.com
ある型が標準レイアウト型であることを指定します。標準レイアウト型は、他のプログラミング言語で書かれたコードとの連携に役立ちます。
注記: 標準では、この名前のついた要件は定義されていません。これはコア言語によって定義された型カテゴリです。一貫性のために、名前付き要件としてここに含められています。
目次 |
[編集] 要件
以下の型はまとめて「標準レイアウト型」と呼ばれます。
- スカラ型
- 標準レイアウトクラス型
- そのような型の配列
- これらの型のcv修飾版
[編集] プロパティ
標準レイアウトを参照してください。
[編集] 欠陥報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| CWG 1672 | C++11 | 最初の非静的データメンバ規則が無視される 空の基底クラスの存在 |
最初の非静的データメンバ規則 再帰的にする |
| CWG 1813 | C++11 | 間接的な基底クラスで定義されたメンバを持つクラス 技術的には標準レイアウトではなかった |
すべてのメンバ宣言が 同じクラスにある必要がある |
| CWG 2120 | C++11 | 最初のメンバが配列の場合、比較の際に考慮されていなかった 最初の要素の型と基底クラスの型を比較する際 |
配列メンバも考慮される |
[編集] 関連項目
| (C++11) |
型がスタンダードレイアウト型であるかをチェックする (クラステンプレート) |