Хотя copy_if
не входит в более ранний стандарт, вы можете сделать то же самое с remove_copy_if
.
И если у вас есть C ++ 11, это тривиально просто:
std::remove_copy_if(
v.begin(),
v.end(),
std::back_inserter(b),
[] (const A& val) -> bool
{ return val.test(); });
Поскольку у вас нет C ++ 11, все равно легко:
// global free function
bool test_a(const A& a) { return a.test(); }
std::remove_copy_if(
v.begin(),
v.end(),
std::back_inserter(b),
test_a);