Header file range/v3/view/intersperse.hpp

#include <meta/meta.hpp>

#include <range/v3/range_fwd.hpp>

#include <range/v3/empty.hpp>

#include <range/v3/begin_end.hpp>

#include <range/v3/iterator_range.hpp>

#include <range/v3/size.hpp>

#include <range/v3/range_traits.hpp>

#include <range/v3/range_concepts.hpp>

#include <range/v3/view_adaptor.hpp>

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

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

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

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

namespace ranges
{
    inline namespace v3
    {
        template <typename Rng>
        struct intersperse_view;
        
        namespace view
        {
            struct intersperse_fn
            {
                template <typename Rng, typename T = range_value_t<Rng>>
                using Concept = meta::and_<InputRange<Rng>, ConvertibleTo<T, range_value_t<Rng>>, ConvertibleTo<range_reference_t<Rng>, range_value_t<Rng>>, SemiRegular<range_value_t<Rng>>>;
                
                template <typename Rng, int _concept_requires_161 = 42, typename std::enable_if<(_concept_requires_161==43)||(Concept<Rng>()), int>::type=0>
                intersperse_view<all_t<Rng>> operator()(Rng&& rng, range_value_t<Rng> val) const;
                
                template <typename Rng, typename T, int _concept_requires_169 = 42, typename std::enable_if<(_concept_requires_169==43)||(!Concept<Rng, T>()), int>::type=0>
                void operator()(Rng&&, T&&) const;
            };
            
            inline namespace 
            {
                constexpr auto& intersperse = static_const<view<intersperse_fn>>::value;
            }
        }
    }
}

Class template ranges::v3::intersperse_view<Rng>

template <typename Rng>
struct intersperse_view
: view_adaptor<intersperse_view<Rng>, Rng, (range_cardinality<Rng>::value > 0) ? static_cast<enum ranges::v3::cardinality>(range_cardinality<Rng>::value * 2 - 1) : range_cardinality<Rng>::value>
{
    intersperse_view() = default;
    
    intersperse_view(Rng rng, range_value_t<Rng> val);
    
    template <int _concept_requires_132 = 42, typename std::enable_if<(_concept_requires_132==43)||(SizedRange<Rng>()), int>::type=0>
    range_size_t<Rng> size() const;
};

@{