В Руководстве по стилю Google С++ раздел о перегрузке оператора рекомендует перегружать любых операторов ( "за исключением редких особых обстоятельств" ). В частности, он рекомендует:
В частности, не перегружайте
operator==илиoperator<так, чтобы ваш класс может использоваться как ключ в STL-контейнер; вместо этого вы должны создать принцип равенства и сравнения типы при объявлении контейнера.
Я немного расплывчатый от того, как будет выглядеть такой функтор, но мой главный вопрос: зачем вы хотите написать для этого своих функторов? Не будет ли определять operator< и использовать стандартную функцию std::less<T>, проще? Есть ли преимущество в использовании одного над другим?