Если мы используем структуру или класс в качестве ключа, то для размещения значений в дереве требуется функция сравнения, но если в качестве ключа используется пара, то как структура данных карты размещает значения в дереве. То есть должно быть что-то, чтобы сравнить ключи и сохранить их в дереве.
Функция сравнения по умолчанию для std::map
является std::less
используя тип Key для аргументов. std::less
просто вызывает <
оператор по своим аргументам, который определен для std::pair
(это сравнивает first
а также second
лексикографически, используя их operator<
).
Других решений пока нет …