Header file range/v3/action/split.hpp

#include <meta/meta.hpp>

#include <range/v3/range_fwd.hpp>

#include <range/v3/to_container.hpp>

#include <range/v3/action/action.hpp>

#include <range/v3/action/concepts.hpp>

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

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

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

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

#include <range/v3/view/split.hpp>

#include <range/v3/view/transform.hpp>

namespace ranges
{
    inline namespace v3
    {
        namespace action
        {
            struct split_fn
            {
                template <typename Rng, typename Fun, int _concept_requires_52 = 42, typename std::enable_if<(_concept_requires_52==43)||(view::split_fn::FunctionConcept<Rng, Fun>()), int>::type=0>
                std::vector<split_value_t<Rng>> operator()(Rng&& rng, Fun fun) const;
                
                template <typename Rng, typename Fun, int _concept_requires_59 = 42, typename std::enable_if<(_concept_requires_59==43)||(view::split_fn::PredicateConcept<Rng, Fun>()), int>::type=0>
                std::vector<split_value_t<Rng>> operator()(Rng&& rng, Fun fun) const;
                
                template <typename Rng, int _concept_requires_66 = 42, typename std::enable_if<(_concept_requires_66==43)||(view::split_fn::ElementConcept<Rng>()), int>::type=0>
                std::vector<split_value_t<Rng>> operator()(Rng&& rng, range_value_t<Rng> val) const;
                
                template <typename Rng, typename Sub, int _concept_requires_73 = 42, typename std::enable_if<(_concept_requires_73==43)||(view::split_fn::SubRangeConcept<Rng, Sub>()), int>::type=0>
                std::vector<split_value_t<Rng>> operator()(Rng&& rng, Sub&& sub) const;
                
                template <typename Rng, typename T, int _concept_requires_82 = 42, typename std::enable_if<(_concept_requires_82==43)||(!ConvertibleTo<T, range_value_t<Rng>>()), int>::type=0>
                void operator()(Rng&&, T&&) const volatile;
            };
            
            inline namespace 
            {
                constexpr auto& split = static_const<action<split_fn>>::value;
            }
        }
    }
}