第 17 条図書館の紹介:
17.5.2.3 プライベートメンバー [objects.within.classes]
1 - 条項 18 から 30 および付属書 D は、クラスの表現を指定しておらず、意図的にクラス メンバの指定を省略しています。実装は、条項 18 から 30 および附属書 D で指定されたメンバー関数のセマンティクスを実装するために必要に応じて、静的または非静的クラス メンバー、またはその両方を定義することができます。
これは、1.4 実装コンプライアンス [intro.compliance]によってサポートされています。
3 - クラスおよびクラス テンプレートの場合、ライブラリの Clauses は部分的な定義を指定します。プライベート メンバー (条項 11) は指定されていませんが、各実装は、ライブラリ条項の説明に従って定義を完了するためにそれらを提供する必要があります。
継承による指定されたセマンティクスの実装は、第 17 節のどこにも明示的に議論されていませんが、上記の 17.5.2.3 の第 3 段落を通じて暗黙的に許可されています。
3 - 実装では、同等の外部動作を提供する任意の手法を使用できます。
これは、たとえば、ノードベースの順序付けられた連想コンテナーが、継承によって実装の詳細 (最終的にはクラス メンバーを含む) を共有できる方法です。
の外部動作は、クラス メンバーとしてtuple
持つA
場合と直接継承する場合とで変更されるため、また、この動作の変更により、(単にクラスの を変更するのではなく) 適切な形式のプログラムが拒否されるためsizeof
、libstdc++ は次の規則に違反しています。標準。