Header file range/v3/view/repeat_n.hpp

#include <range/v3/range_fwd.hpp>

#include <range/v3/range_concepts.hpp>

#include <range/v3/view_facade.hpp>

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

namespace ranges
{
    inline namespace v3
    {
        template <typename Val>
        struct repeat_n_view
        : view_facade<repeat_n_view<Val>, finite>
        {
            repeat_n_view() = default;
            
            constexpr repeat_n_view(Val value, std::ptrdiff_t n);
            
            constexpr std::size_t size() const;
        };
        
        namespace view
        {
            struct repeat_n_fn
            {
                template <typename Val, int _concept_requires_106 = 42, typename std::enable_if<(_concept_requires_106==43)||(SemiRegular<Val>()), int>::type=0>
                repeat_n_view<Val> operator()(Val value, std::ptrdiff_t n) const;
                
                template <typename Val, int _concept_requires_113 = 42, typename std::enable_if<(_concept_requires_113==43)||(!SemiRegular<Val>()), int>::type=0>
                void operator()(Val, std::ptrdiff_t) const;
            };
            
            inline namespace 
            {
                constexpr auto& repeat_n = static_const<repeat_n_fn>::value;
            }
        }
    }
}