It\'s very annoying that copy_if is not in C++. Does anyone know if it will be in C++0x?
In the meantime, it's not very hard to make your own copy_if() using remove_copy_if():
#include
struct my_predicate : std::unary_function {
bool operator()(my_arg_type const& x) const { ... }
};
// To perform "copy_if(x, y, z, my_predicate())", write:
remove_copy_if(x, y, z, std::not1(my_predicate()));
Using not1() requires your predicate class to supply a nested type, argument_type, identifying the type of the argument -- as shown above, one convenient way to do this is to derive from unary_function, where T is the argument type.