Range-v3
Range algorithms, views, and actions for the Standard Library
ranges::make_subrange_fn Struct Reference

Synopsis of methods

constexpr make_subrange_fn make_subrange {}
 

Public Member Functions

template<typename I , typename S >
constexpr subrange< I, S > operator() (I i, S s) const
 
template<typename I , typename S >
constexpr subrange< I, S, subrange_kind::sized > operator() (I i, S s, detail::iter_size_t< I > n) const
 
template<typename R >
constexpr auto operator() (R &&r) const -> subrange< iterator_t< R >, sentinel_t< R >,(sized_range< R >||sized_sentinel_for< sentinel_t< R >, iterator_t< R >>) ? subrange_kind::sized :subrange_kind::unsized >
 
template<typename R >
constexpr subrange< iterator_t< R >, sentinel_t< R >, subrange_kind::sized > operator() (R &&r, detail::iter_size_t< iterator_t< R >> n) const
 

Member Function Documentation

◆ operator()() [1/3]

template<typename I , typename S >
constexpr subrange<I, S, subrange_kind::sized> ranges::make_subrange_fn::operator() ( i,
s,
detail::iter_size_t< I >  n 
) const
constexpr
Precondition
requires input_or_output_iterator<I> && sentinel_for<S, I>

◆ operator()() [2/3]

template<typename R >
constexpr auto ranges::make_subrange_fn::operator() ( R &&  r) const -> subrange<iterator_t<R>, sentinel_t<R>, (sized_range<R> || sized_sentinel_for<sentinel_t<R>, iterator_t<R>>) ? subrange_kind::sized : subrange_kind::unsized>
constexpr
Precondition
requires borrowed_range<R>

◆ operator()() [3/3]

template<typename R >
constexpr subrange<iterator_t<R>, sentinel_t<R>, subrange_kind::sized> ranges::make_subrange_fn::operator() ( R &&  r,
detail::iter_size_t< iterator_t< R >>  n 
) const
constexpr
Precondition
requires borrowed_range<R>