Header file range/v3/algorithm/partition_copy.hpp

#include <meta/meta.hpp>

#include <range/v3/range_fwd.hpp>

#include <range/v3/begin_end.hpp>

#include <range/v3/distance.hpp>

#include <range/v3/range_concepts.hpp>

#include <range/v3/range_traits.hpp>

#include <range/v3/utility/iterator.hpp>

#include <range/v3/utility/iterator_concepts.hpp>

#include <range/v3/utility/iterator_traits.hpp>

#include <range/v3/utility/functional.hpp>

#include <range/v3/utility/static_const.hpp>

#include <range/v3/utility/tagged_tuple.hpp>

#include <range/v3/algorithm/tagspec.hpp>

namespace ranges
{
    inline namespace v3
    {
        template <typename I, typename O0, typename O1, typename C, typename P = ident>
        using PartitionCopyable = meta::strict_and<InputIterator<I>, WeaklyIncrementable<O0>, WeaklyIncrementable<O1>, IndirectlyCopyable<I, O0>, IndirectlyCopyable<I, O1>, IndirectCallablePredicate<C, projected<I, P>>>;
        
        struct partition_copy_fn;
        
        inline namespace 
        {
            constexpr auto& partition_copy = static_const<with_braced_init_args<partition_copy_fn>>::value;
        }
    }
}

Class ranges::v3::partition_copy_fn

struct partition_copy_fn
{
    template <typename I, typename S, typename O0, typename O1, typename C, typename P = ident, int _concept_requires_50 = 42, typename std::enable_if<(_concept_requires_50==43)||(PartitionCopyable<I, O0, O1, C, P>()&&Sentinel<S, I>()), int>::type=0>
    tagged_tuple<tag::in(I), tag::out1(O0), tag::out2(O1)> operator()(I, O0, O1, I begin, S end, O0 o0, O1 o1, C pred_, P proj_ = P{}) const;
    
    template <typename Rng, typename O0, typename O1, typename C, typename P = ident, typename I = range_iterator_t<Rng>, int _concept_requires_75 = 42, typename std::enable_if<(_concept_requires_75==43)||(PartitionCopyable<I, O0, O1, C, P>()&&Range<Rng>()), int>::type=0>
    tagged_tuple<tag::in(range_safe_iterator_t<Rng>), tag::out1(O0), tag::out2(O1)> operator()(range_safe_iterator_t<Rng>, O0, O1, Rng&& rng, O0 o0, O1 o1, C pred, P proj = P{}) const;
};

@{


Variable ranges::v3::partition_copy

constexpr auto& partition_copy = static_const<with_braced_init_args<partition_copy_fn>>::value;

partition_copy_fn