Jak można całkowicie uporządkować wskaźniki?

Wskaźniki w C ++ mogą być generalnie porównywane tylko dla równości. Natomiast mniej niż porównanie jest dozwolone tylko dla dwóch wskaźników, które wskazują podobiekty tego samego kompletnego obiektu (np. Elementy tablicy).

Tak daneT * p, * q, ocenianie jest ogólnie nielegalnep < q.

Biblioteka standardowa zawiera szablony klas funktorastd::less<T> itp., które zawijają wbudowanego operatora<. Jednak standard ma to do powiedzenia na temat typów wskaźników (20.8.5 / 8):

Dla szablonówgreater, less, greater_equal, iless_equalSpecjalizacje dla dowolnego typu wskaźnika dają całkowitą kolejność, nawet jeśli operatory wbudowane<, >, <=, >= nie rób.

Jak można to zrealizować? Czy jest to nawet możliwe do wdrożenia?

Przyjrzałem się GCC 4.7.2 i Clang 3.2, które nie zawierająkażdy specjalizacja dla typów wskaźników w ogóle. Wydaje się, że zależą od< ważne bezwarunkowo na wszystkich obsługiwanych platformach.

questionAnswers(4)

yourAnswerToTheQuestion