Range-v3
Range algorithms, views, and actions for the Standard Library
ranges::subrange< I, S, K > Struct Template Reference

Public Types

using iterator = I
 
using sentinel = S
 
using size_type = detail::iter_size_t< I >
 

Public Member Functions

constexpr subrangeadvance (iter_difference_t< I > n)
 
constexpr I begin () const noexcept(std::is_nothrow_copy_constructible< I >::value)
 
constexpr bool empty () const
 
constexpr S end () const noexcept(std::is_nothrow_copy_constructible< S >::value)
 
constexpr subrange next (iter_difference_t< I > n=1) const
 
template<typename PairLike >
requires defer::not_same_as_< PairLike, subrange > &&constexpr detail::defer::pair_like_convertible_from_< PairLike, const I &, const S & > operator PairLike () const
 
constexpr auto prev (iter_difference_t< I > n=1) const -> subrange requires bidirectional_iterator< I >
 
constexpr auto size () const -> size_type requires(K==subrange_kind::sized)
 
template<typename I2 >
constexpr subrange (I2 &&i, S s) requires detail
 
template<typename I2 >
constexpr subrange (I2 &&i, S s, size_type n) requires detail
 
template<typename I2 >
constexpr subrange (I2 &&i, S s, size_type n) requires detail
 
template<typename R >
constexpr subrange (R &&r) requires defer
 
template<typename R >
constexpr subrange (R &&r) requires defer
 
template<typename R >
constexpr subrange (R &&r, size_type n) requires detail