Как полностью упорядочить указатели?

В целом, указатели в C ++ могут сравниваться только на равенство. Напротив, сравнение меньше, чем допустимо, только для двух указателей, которые указывают на подобъекты одного и того же законченного объекта (например, элементов массива).

Так даноT * p, * q, это вообще незаконно оцениватьp < q.

Стандартная библиотека содержит шаблоны классов функторовstd::less<T> и т.д., которые обертывают встроенный оператор<, Однако в стандарте есть, что сказать о типах указателей (20.8.5 / 8):

Для шаблоновgreater, less, greater_equal, а такжеless_equal, специализации для любого типа указателя дают общий порядок, даже если встроенные операторы<, >, <=, >= не надо.

Как это можно реализовать? Возможно ли вообще это реализовать?

Я взглянул на GCC 4.7.2 и Clang 3.2, которые не содержатЛюбые специализация для типов указателей вообще. Кажется, они зависят от< быть действительным безоговорочно на всех поддерживаемых платформах.

Ответы на вопрос(4)

Ваш ответ на вопрос