std::map
гарантирует сортировку. Если содержимое не изменяется, сортировка карты не должна.
Я могу думать только о сценарии, в котором это может не произойти: ключи карты являются указателями, а функтор сравнения разыменовывает объекты, на которые указывают ключи, для выполнения операций сравнения с ними. Ключи не изменяются, но значения, на которые указывает do (по любой другой причине). И даже там я не уверен, что стандарт заставляет реализацию std::map
оценивать сравнение только во время вставки элементов.