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