...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::algorithm::copy_until — Copies all the elements at the start of the input range that do not satisfy the predicate to the output range.
// In header: <boost/algorithm/cxx11/copy_if.hpp> template<typename Range, typename OutputIterator, typename Predicate> BOOST_CXX14_CONSTEXPR std::pair< typename boost::range_iterator< const Range >::type, OutputIterator > copy_until(const Range & r, OutputIterator result, Predicate p);