Почему сами функторы STL являются шаблонами, а не их оператором вызова функций?

Функторы STL реализованы следующим образом:

template<class T>
struct less{
  bool operator()(T const& lhs, T const& rhs){
    return lhs < rhs;
  }
};

Это заставляет нас упоминать (возможно, длинный) тип каждый раз, когда мы создаем такой функтор. Почему они не реализованы, как показано ниже? причины?

struct less{
  template<class T>
  bool operator()(T const& lhs, T const& rhs){
    return lhs < rhs;
  }
};

Это сделало бы их пригодными для использования без упоминания (возможно, длинных) типов.

22
задан Xeo 4 July 2011 в 20:52
поделиться