Предикат - частный случай функтора.
Метод operator() функтора может возвращать только значения типа bool.
Предикаты могут использоваться для сортировки элементов в контейнерах
Предикат может быть только структурой, а функтор - еще и классом.
Для функтора должен быть переопределен operator<