Header file range/v3/view/const.hpp

#include <range/v3/range_fwd.hpp>

#include <range/v3/size.hpp>

#include <range/v3/begin_end.hpp>

#include <range/v3/range_concepts.hpp>

#include <range/v3/view_adaptor.hpp>

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

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

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

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

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

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

namespace ranges
{
    inline namespace v3
    {
        template <typename Rng>
        struct const_view;
        
        namespace view
        {
            struct const_fn
            {
                template <typename Rng>
                const_view<all_t<Rng>> operator()(Rng&& rng) const;
            };
            
            inline namespace 
            {
                constexpr auto& const_ = static_const<view<const_fn>>::value;
            }
        }
    }
}

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

template <typename Rng>
struct const_view
: view_adaptor<const_view<Rng>, Rng>
{
    const_view() = default;
    
    explicit const_view(Rng rng);
    
    template <int _concept_requires_75 = 42, typename std::enable_if<(_concept_requires_75==43)||(SizedRange<Rng const>()), int>::type=0>
    range_size_t<Rng> size() const;
    
    template <int _concept_requires_80 = 42, typename std::enable_if<(_concept_requires_80==43)||(SizedRange<Rng>()), int>::type=0>
    range_size_t<Rng> size();
};

@{