У меня есть некий набор своих параметризованных классов, для которых определены операции сравнения. Для использования этих классов в качестве ключей map надо использовать другие операции сравнения (те которые определены неоднозначны). Напрашивается частично специфицировать структуру less, я могу сделать напр так
template<int D> struct A{ ... };
namespace std{
template<class T> struct less;
template<int D> struct less<A<D> > {
bool operator()(const A<D>& x, const A<D>& y) const {...}
};
};
А в STL вроде так
template <class T>
struct less : binary_function<T, T, bool> {
bool operator()(const T& x, const T& y) const { return x < y; }
};