Mr. Twister

Первый раз в жизни вижу, чтобы алгебра на что-либо влияла

Оказывается, если в std::sort передать сравнивающую функцию, не устанавливающую строгий слабый порядок, то sort натурально полезет сравнивать произвольные несуществующие вещи за пределами массива и свалится. Я вообще-то ожидал, что просто плохо отсортирует.
Я проверил на паре компалеров - так и есть. В одних случаях плохо сортирует, в других бьёт память. Собственно, давать поломаный предикат в std::sort это undefined behaviour, так что с них взятки гладки. :)
Я как раз рад, что лишний раз границы не проверяют и время не тратят, но при сортировке массива с известными началом и концом выглядит эффектно.
Кстати, единственная имплементация, которая почуяла проблему - MS Visual C++. В дебаг версии срабатывает ассерт с правильным сообщением что компаратор плохой.