Здравствуйте, _hum_, Вы писали:
__>и ему придется слепо следовать условия, которым должно удовлетворять compare, не понимая, что они означают.
Так он не всегда и поймёт как нужно следовать, и почему это std::sort крэшится:
http://stackoverflow.com/questions/18291620/why-will-stdsort-crash-if-the-comparison-function-is-not-as-operator
http://stackoverflow.com/questions/19757210/stdsort-from-algorithm-crashes
Некоторые даже репортят это как баг:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59391