Header file range/v3/view/unbounded.hpp

#include <range/v3/range_fwd.hpp>

#include <range/v3/view_interface.hpp>

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

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

namespace ranges
{
    inline namespace v3
    {
        template <typename I>
        struct unbounded_view;
        
        namespace view
        {
            struct unbounded_fn
            {
                template <typename I>
                constexpr unbounded_view<I> operator()(I it) const;
            };
            
            inline namespace 
            {
                constexpr auto& unbounded = static_const<unbounded_fn>::value;
            }
        }
    }
}

Class template ranges::v3::unbounded_view<I>

template <typename I>
struct unbounded_view
: view_interface<unbounded_view<I>, infinite>
{
    explicit constexpr unbounded_view(I it);
    
    constexpr I begin() const;
    
    constexpr unreachable end() const;
};

@{