Здравствуйте Кодт, Вы писали:
К>Здравствуйте DarkGray, Вы писали:
DG>>Так в том то и дело, что это не работает. Так как вызывается operator() от класса greater, а не от твоего класса.
К>Расследовал. Действительно
К>STL от VC++ хочется иметь предикат типа greater<T>, и он имеет именно его.
К>Похоже, халявы нет, и придется юзать контейнеры с произвольным доступом...
Зачем с произвольным доступом
смотрим определение
template<class _Ty>
struct greater : binary_function<_Ty, _Ty, bool> {
bool operator()(const _Ty& _X, const _Ty& _Y) const
{return (_X > _Y); }
};
просто либо делаем производный класс от нашего с переопределённым опретором >, ( если не встроенный тип )
либо класс оболочку с нужным оператором.