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