std::list
имеет встроенный метод sort
, который необходимо использовать, поскольку std::sort
работает только с итераторами с произвольным доступом, тогда как std::list::iterator
просто принадлежит к классу итераторов двунаправленных итераторов.
Result.poly.sort(SortDescending());
Кроме того, ваш operator ()
должен быть отмечен const
.
struct SortDescending
{
bool operator()(const term& t1, const term& t2) const
{
return t2.pow < t1.pow;
}
};
Наконец, для этого вам не нужно писать собственный компаратор, просто используйте std::greater<T>
(находится в стандартном заголовке <functional>
):
Result.poly.sort(std::greater<term>());