[alg.partitions] (original) (raw)

template<class InputIterator, class Predicate> constexpr bool is_partitioned(InputIterator first, InputIterator last, Predicate pred);template<class ExecutionPolicy, class ForwardIterator, class Predicate> bool is_partitioned(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, 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, class Proj = identity,[indirect_unary_predicate](indirectcallable.indirectinvocable#concept:indirect%5Funary%5Fpredicate "24.3.6.3 Indirect callables [indirectcallable.indirectinvocable]")<projected<I, Proj>> Pred> constexpr bool ranges::is_partitioned(I first, S last, Pred pred, Proj proj = {});template<[input_range](range.refinements#concept:input%5Frange "25.4.5 Other range refinements [range.refinements]") R, 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> constexpr bool ranges::is_partitioned(R&& r, Pred pred, Proj proj = {});

template<class ForwardIterator, class Predicate> constexpr ForwardIterator partition(ForwardIterator first, ForwardIterator last, Predicate pred);template<class ExecutionPolicy, class ForwardIterator, class Predicate> ForwardIterator partition(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred);template<[permutable](alg.req.permutable#concept:permutable "24.3.7.6 Concept permutable [alg.req.permutable]") I, [sentinel_for](iterator.concept.sentinel#concept:sentinel%5Ffor "24.3.4.7 Concept sentinel_­for [iterator.concept.sentinel]")<I> S, class Proj = identity,[indirect_unary_predicate](indirectcallable.indirectinvocable#concept:indirect%5Funary%5Fpredicate "24.3.6.3 Indirect callables [indirectcallable.indirectinvocable]")<projected<I, Proj>> Pred> constexpr subrange<I> ranges::partition(I first, S last, Pred pred, Proj proj = {});template<[forward_range](range.refinements#concept:forward%5Frange "25.4.5 Other range refinements [range.refinements]") R, 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 [permutable](alg.req.permutable#concept:permutable "24.3.7.6 Concept permutable [alg.req.permutable]")<iterator_t<R>> constexpr borrowed_subrange_t<R> ranges::partition(R&& r, Pred pred, Proj proj = {});

template<class BidirectionalIterator, class Predicate> BidirectionalIteratorconstexpr stable_partition(BidirectionalIterator first, BidirectionalIterator last, Predicate pred);template<class ExecutionPolicy, class BidirectionalIterator, class Predicate> BidirectionalIterator stable_partition(ExecutionPolicy&& exec, BidirectionalIterator first, BidirectionalIterator last, Predicate pred);template<[bidirectional_iterator](iterator.concept.bidir#concept:bidirectional%5Fiterator "24.3.4.12 Concept bidirectional_­iterator [iterator.concept.bidir]") I, [sentinel_for](iterator.concept.sentinel#concept:sentinel%5Ffor "24.3.4.7 Concept sentinel_­for [iterator.concept.sentinel]")<I> S, 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 [permutable](alg.req.permutable#concept:permutable "24.3.7.6 Concept permutable [alg.req.permutable]")<I> constexpr subrange<I> ranges::stable_partition(I first, S last, Pred pred, Proj proj = {});template<[bidirectional_range](range.refinements#concept:bidirectional%5Frange "25.4.5 Other range refinements [range.refinements]") R, 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 [permutable](alg.req.permutable#concept:permutable "24.3.7.6 Concept permutable [alg.req.permutable]")<iterator_t<R>> constexpr borrowed_subrange_t<R> ranges::stable_partition(R&& r, Pred pred, Proj proj = {});

template<class InputIterator, class OutputIterator1, class OutputIterator2, class Predicate> constexpr pair<OutputIterator1, OutputIterator2> partition_copy(InputIterator first, InputIterator last, OutputIterator1 out_true, OutputIterator2 out_false, Predicate pred);template<class ExecutionPolicy, class ForwardIterator, class ForwardIterator1,class ForwardIterator2, class Predicate> pair<ForwardIterator1, ForwardIterator2> partition_copy(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, ForwardIterator1 out_true, ForwardIterator2 out_false, 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]") O1, [weakly_incrementable](iterator.concept.winc#concept:weakly%5Fincrementable "24.3.4.4 Concept weakly_­incrementable [iterator.concept.winc]") O2,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, O1> && [indirectly_copyable](alg.req.ind.copy#concept:indirectly%5Fcopyable "24.3.7.3 Concept indirectly_­copyable [alg.req.ind.copy]")<I, O2> constexpr ranges::partition_copy_result<I, O1, O2> ranges::partition_copy(I first, S last, O1 out_true, O2 out_false, 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]") O1, [weakly_incrementable](iterator.concept.winc#concept:weakly%5Fincrementable "24.3.4.4 Concept weakly_­incrementable [iterator.concept.winc]") O2,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>, O1> && [indirectly_copyable](alg.req.ind.copy#concept:indirectly%5Fcopyable "24.3.7.3 Concept indirectly_­copyable [alg.req.ind.copy]")<iterator_t<R>, O2> constexpr ranges::partition_copy_result<borrowed_iterator_t<R>, O1, O2> ranges::partition_copy(R&& r, O1 out_true, O2 out_false, Pred pred, Proj proj = {});