Why will std::sort crash if the comparison function is not as operator <?
std::sort
requires a sorter which satisfies the strict weak ordering rule, which is explained
here
So, your comparer says that a < b
when a == b
which doesn't follow the strict weak ordering rule, it is possible that the algorithm will crash because it'll enter in an infinite loop.
The answer for xorguy is pretty good.
I would just add some quote from the standard :
25.4 Sorting and related operations [alg.sorting]
For algorithms other than those described in 25.4.3 to work correctly, comp has to induce a strict weak ordering on the values.
The term strict refers to the requirement of an irreflexive relation (!comp(x, x) for all x), and the term weak to requirements that are not as strong as those for a total ordering, but stronger than those for a partial ordering.
So xorguy explains it very well : You comp
function says that a < b
when a == b
which doesn't follow the strict weak ordering rule...