Is there a function similar to accummulate() but provides a unary pre-condition to filter the linear container when performing the operation? I search for
accummulate()
Do you really must to use an algorithm? Something as simple as bellow won't do?
for (const auto& v: V) if(pred(v)) sum+=v;
Sam's idea is also good. But I would do it with lambda:
sum = accumulate( V.begin(), V.end(), 0, [](int a, int b){return pred(b)? a+b: a;} );