| 279 | */ |
| 280 | template<typename OutputIteratorT, typename RangeT, typename PredicateT> |
| 281 | inline OutputIteratorT trim_copy_if( |
| 282 | OutputIteratorT Output, |
| 283 | const RangeT& Input, |
| 284 | PredicateT IsSpace) |
| 285 | { |
| 286 | iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(::boost::as_literal(Input)); |
| 287 | |
| 288 | BOOST_STRING_TYPENAME |
| 289 | range_const_iterator<RangeT>::type TrimEnd= |
| 290 | ::boost::algorithm::detail::trim_end( |
| 291 | ::boost::begin(lit_range), |
| 292 | ::boost::end(lit_range), |
| 293 | IsSpace); |
| 294 | |
| 295 | std::copy( |
| 296 | detail::trim_begin( |
| 297 | ::boost::begin(lit_range), TrimEnd, IsSpace), |
| 298 | TrimEnd, |
| 299 | Output |
| 300 | ); |
| 301 | |
| 302 | return Output; |
| 303 | } |
| 304 | |
| 305 | //! Trim - parametric |
| 306 | /*! |
no test coverage detected