C ++のポインターは、一般に、同等性についてのみ比較できます。対照的に、未満の比較は、同じ完全なオブジェクトのサブオブジェクト(配列要素など)を指す2つのポインターに対してのみ許可されます。
したがってT * p, * q
、を考えると、一般的に評価することは違法p < q
です。
標準ライブラリにはstd::less<T>
、組み込み演算子をラップするファンクタークラステンプレートなどが含まれてい<
ます。ただし、標準では、ポインタの種類(20.8.5 / 8)について次のように述べています。
テンプレート、、、、
greater
およびの場合less
、組み込み演算子、、、がそうでない場合でも、任意のポインター型の特殊化により全順序が生成されます。greater_equal
less_equal
<
>
<=
>=
これはどのように実現できますか?これを実装することさえ可能ですか?
GCC4.7.2とClang3.2を調べましたが、これらにはポインター型の特殊化はまったく含まれていません。<
それらは、サポートされているすべてのプラットフォームで無条件に有効であることに依存しているようです。