Une bonne habitude à prendre pour les fonctions de comparaison est de toujours renvoyer -1, 0 ou 1, ça enlève la tentation de prendre ce genre de raccourci foireux.
Mais pour revenir au sujet du topic, la solution C++ avec des surcharges séparées pour
operator< et
operator== (les algorithmes génériques n'ont besoin que de ces 2) évite ce problème.

De plus, avoir toute la palette des opérateurs
<,
<=,
==,
>=,
> et
!= donne des comparaisons plus rapides que la fonction de comparaison générique.
