C ++実装にパブリックstd::istream_iterator::_M_equal
メンバー関数があります(他の標準グローバル関数によってistreamイテレーターを比較するために使用されます)。この標準では、ユーザーがそのメンバー関数を使用できるようにする必要はありません。
標準で要求されている機能以外のより多くのパブリックメンバー機能を提供する実装が、依然として「標準」と見なすことができるかどうかを知りたいです。
C ++実装にパブリックstd::istream_iterator::_M_equal
メンバー関数があります(他の標準グローバル関数によってistreamイテレーターを比較するために使用されます)。この標準では、ユーザーがそのメンバー関数を使用できるようにする必要はありません。
標準で要求されている機能以外のより多くのパブリックメンバー機能を提供する実装が、依然として「標準」と見なすことができるかどうかを知りたいです。
はい、これは標準で許可されています。
必要なインターフェースは標準ドキュメントで説明されていますが、通常、それを実装する正確な方法ではありません。のように、アンダースコア+大文字で始まる名前_M_equal
は、実装専用に予約されています。
C ++標準で義務付けられているAPI/機能のみが標準でサポートされている必要があります。標準に準拠する実装は標準であり、実装は独自の拡張機能を自由に追加できますが、他の実装がそれらをサポートする必要がないため、非標準で移植性がありません。
はい、許可されています。名前空間内で独自の名前を定義することは許可されておらずstd
、さらにアンダースコア-大文字の名前が予約されているため、整形式のC++プログラムでこれらの実装の詳細と名前が競合する可能性はありません。
明らかに、ポータブルプログラムはこれらの追加のパブリック関数を使用する必要はありませんが、特定のプラットフォームでそれらを使用することを妨げるものは何もありません。