Согласно cppreference :
При сравнении неравенств () сравниваются первые элементы во-первых, и только если сравнение неравенства для них неверно, сравниваются вторые элементы.
что переводится примерно так:
return ((a.first < b.first) || (!(b.first < a.first) && (a.second < b.second)));
Я спрашиваю, почему это так не интуитивно? Какова причина этого? И есть ли примеры, когда эти рассуждения приводят к правильным ответам?
Я думал, что реализация будет простой:
return a.first < b.first && a.second < b.second