Я знаю, что метод сравнения будет возвращать целочисленное значение, обозначающее что-то вроде разницы между двумя строками (или 0 в случае совпадения). Мой вопрос: в случае обнаружения несоответствия, останавливается ли сравнение при несоответствии или он завершается, пока не будет указан?
Это зависит от компилятора или это стандарт? Я в настоящее время использую GCC 4.1.2
Ну, стандарту все равно, но результат сравнения — стандарт заботится только об этом — полностью зависит от первого несовпадающего символа. Поэтому сравнивать остальные было бы бессмысленно для любой реализации, за исключением, возможно, еще нескольких символов, если проще обращаться с кешами или размерами слов платформы.
Не указано
Стандарт гласит, что rhs.compare(lhs)
эквивалентно char_traits::compare(&rhs[0], &lhs[0], min(rhs.size(), lhs.size())
, char_traits::compare
описывается, чтобы отбросить значения сравнений символов после несоответствия, но будет ли детально прочитано или нет, более подробно это не рассматривается.