Просто еще один способ сделать это с помощью буст-итераторов. На этот раз, используя std::remove_copy_if
:
std::remove_copy_if(v.begin(), v.end(),
boost::make_function_output_iterator(boost::bind(&someFunction, _1)),
!boost::lambda::ll_dynamic_cast<SubType*>(boost::lambda::_1));
Он вызовет функцию (в этом примере someFunction
. Но это может быть что угодно, что может создать boost :: bind - также функция-член) для каждого указателя, указывающего на SubType
.