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

template<typename I2 >
requires detail::convertible_to_not_slicing_< I2, I > && detail::store_size_ ())` const expr subrange(I2 &&i
 
constexpr const I & first_ () const noexcept
 
constexpr I & first_ () noexcept
 
constexpr auto get_size_ () const -> size_type requires ` sized_sentinel_for< S, I > `
 
constexpr auto get_size_ () const noexcept -> size_type requires `(detail::store_size_< K, S, I >()) `
 
constexpr const S & last_ () const noexcept
 
constexpr S & last_ () noexcept
 
constexpr auto set_size_ (size_type n) noexcept -> void requires `(detail::store_size_< K, S, I >()) `
 
requires detail::convertible_to_not_slicing_< I2, I > S size_type std::move (s)
 
requires detail::convertible_to_not_slicing_< I2, I > &&!detail S std::move (s)}
 
template<typename I2 >
requires detail::convertible_to_not_slicing_< I2, I > &&!detail store_size_ ())` const expr subrange(I2 &&i
 

Static Public Member Functions

static constexpr void set_size_ (...) noexcept
 

Public Attributes

data_t data_
 
requires detail::convertible_to_not_slicing_< I2, I > S size_type n: data_{static_cast<I2 &&>(i)
 
requires detail::convertible_to_not_slicing_< I2, I > &&!detail S s: data_{static_cast<I2 &&>(i)
 
requires detail::convertible_to_not_slicing_< I2, I > S s