[alg.copy] (original) (raw)

template<class InputIterator, class OutputIterator, class Predicate> constexpr OutputIterator copy_if(InputIterator first, InputIterator last, OutputIterator result, Predicate pred);template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,class Predicate> ForwardIterator2 copy_if(ExecutionPolicy&& exec, ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result, Predicate pred);template<[input_iterator](iterator.concept.input#concept:input%5Fiterator "24.3.4.9 Concept input_­iterator [iterator.concept.input]") I, [sentinel_for](iterator.concept.sentinel#concept:sentinel%5Ffor "24.3.4.7 Concept sentinel_­for [iterator.concept.sentinel]")<I> S, [weakly_incrementable](iterator.concept.winc#concept:weakly%5Fincrementable "24.3.4.4 Concept weakly_­incrementable [iterator.concept.winc]") O, class Proj = identity,[indirect_unary_predicate](indirectcallable.indirectinvocable#concept:indirect%5Funary%5Fpredicate "24.3.6.3 Indirect callables [indirectcallable.indirectinvocable]")<projected<I, Proj>> Pred> requires [indirectly_copyable](alg.req.ind.copy#concept:indirectly%5Fcopyable "24.3.7.3 Concept indirectly_­copyable [alg.req.ind.copy]")<I, O> constexpr ranges::copy_if_result<I, O> ranges::copy_if(I first, S last, O result, Pred pred, Proj proj = {});template<[input_range](range.refinements#concept:input%5Frange "25.4.5 Other range refinements [range.refinements]") R, [weakly_incrementable](iterator.concept.winc#concept:weakly%5Fincrementable "24.3.4.4 Concept weakly_­incrementable [iterator.concept.winc]") O, class Proj = identity,[indirect_unary_predicate](indirectcallable.indirectinvocable#concept:indirect%5Funary%5Fpredicate "24.3.6.3 Indirect callables [indirectcallable.indirectinvocable]")<projected<iterator_t<R>, Proj>> Pred> requires [indirectly_copyable](alg.req.ind.copy#concept:indirectly%5Fcopyable "24.3.7.3 Concept indirectly_­copyable [alg.req.ind.copy]")<iterator_t<R>, O> constexpr ranges::copy_if_result<borrowed_iterator_t<R>, O> ranges::copy_if(R&& r, O result, Pred pred, Proj proj = {});