pred
должен быть экземпляром типа с оператором overloaded (), поэтому его можно вызывать как функцию.
struct MyPred
{
int x;
bool operator()(int i)
{
return (i == x);
}
};
(здесь для краткости используется struct
)
std::vector<int> v;
// fill v with ints
MyPred pred;
pred.x = 5;
std::vector<int>::iterator f
= std::find_if(v.begin(),
v.end(),
pred);
Написание пользовательских классов, подобных этому (с «загрузкой» кода!), По меньшей мере громоздко, но будет значительно улучшено в C ++ 0x при добавлении лямбда-синтаксиса.