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

Public Types

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

Public Member Functions

template<typename I2 >
 CPP_TEMPLATE_AUX_0 (requires ` detail::convertible_to_not_slicing_< I2, I > &&(!detail::store_size_< K, S, I >())) const expr subrange(I2 &&i
 
template<typename I2 >
 CPP_TEMPLATE_AUX_0 (requires ` detail::convertible_to_not_slicing_< I2, I > &&(detail::store_size_< K, S, I >())) 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 >()) `
 
S size_type std::move (s)
 
std::move (s)}
 
- Public Member Functions inherited from ranges::view_interface< subrange< I, S, K >, same_as< S, unreachable_sentinel_t > ? infinite :K==subrange_kind::sized ? finite :unknown >
CPP_TEMPLATE_AUX_0 c (requires ` True &&(!detail::has_fixed_size_< Cardinality >) &&forward_range< D< True > const >) ccconstexpr bool empty() const noexcept(noexcept(bool(ranges::begin(std::declval< D< True > const & >())==ranges::end(std::declval< D< True > const & >()))))
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&(!detail::has_fixed_size_< Cardinality >) &&forward_range< D< True >>) ccconstexpr bool empty() noexcept(noexcept(bool(ranges::begin(std::declval< D< True > & >())==ranges::end(std::declval< D< True > & >()))))
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&(Cardinality< 0) &&(Cardinality !=infinite) &&(!forward_range< D< True > const >) &&sized_range< D< True > const >) ccconstexpr bool empty() const noexcept(noexcept(bool(ranges::size(std::declval< D< True > const & >())==0)))
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&(Cardinality< 0) &&(Cardinality !=infinite) &&(!forward_range< D< True >>) &&sized_range< D< True >>) ccconstexpr bool empty() noexcept(noexcept(bool(ranges::size(std::declval< D< True > & >())==0)))
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&(Cardinality< 0) &&sized_sentinel_for< sentinel_t< D< True > const >, iterator_t< D< True > const >> &&forward_range< D< True > const >) ccconstexpr detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&common_range< D< True > const > &&bidirectional_range< D< True > const >) ccconstexpr range_reference_t< D< True > const > back() const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&common_range< D< True >> &&bidirectional_range< D< True >>) ccconstexpr range_reference_t< D< True >> back()
 Access the last element in a range:
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&contiguous_iterator< iterator_t< D< True > const >>) ccconstexpr std
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&contiguous_iterator< iterator_t< D< True >>>) ccconstexpr std
 Returns a pointer to the block of memory containing the elements of a contiguous range:
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&forward_range< D< True > const >) ccconstexpr range_reference_t< D< True > const > front() const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&forward_range< D< True >>) ccconstexpr range_reference_t< D< True >> front()
 Access the first element in a range:
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&input_range< D< True > & > &&sized_range< D< True > & >) ccconstexpr auto operator[](detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&input_range< D< True > & >) ccconstexpr auto operator[](detail
 Python-ic slicing:
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&input_range< D< True > & >) ccconstexpr auto operator[](detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&input_range< D< True > const & > &&sized_range< D< True > const & >) ccconstexpr auto operator[](detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&input_range< D< True > const & >) ccconstexpr auto operator[](detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&input_range< D< True > const & >) ccconstexpr auto operator[](detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&input_range< D< True >> &&sized_range< D< True >>) ccconstexpr auto operator[](detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&input_range< D< True >>) ccconstexpr auto operator[](detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&input_range< D< True >>) ccconstexpr auto operator[](detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&random_access_range< D< True > const > &&sized_range< D< True > const >) ccconstexpr range_reference_t< D< True > const > at(range_difference_t< D< True >> n) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&random_access_range< D< True > const >) ccconstexpr range_reference_t< D< True > const > operator[](range_difference_t< D< True >> n) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&random_access_range< D< True >> &&sized_range< D< True >>) ccconstexpr range_reference_t< D< True >> at(range_difference_t< D< True >> n)
 Returns a reference to the element at specified location pos, with bounds checking.
 
CPP_TEMPLATE_AUX_0 c (requires ` True &&random_access_range< D< True >>) ccconstexpr range_reference_t< D< True >> operator[](range_difference_t< D< True >> n)
 Simple indexing:
 
 CPP_TEMPLATE_AUX_0 (requires ` True &&(Cardinality >=0)) static const expr std
 If the size of the range is known at compile-time and finite, return it.
 
 CPP_TEMPLATE_AUX_0 (requires ` True &&(forward_range< D< True > & >||(input_range< D< True > & > &&sized_range< D< True > & >))) const expr auto operator[](detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
 CPP_TEMPLATE_AUX_0 (requires ` True &&(forward_range< D< True > & >||(input_range< D< True > & > &&sized_range< D< True > & >))) const expr auto operator[](detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
 CPP_TEMPLATE_AUX_0 (requires ` True &&(forward_range< D< True > const & >||(input_range< D< True > const & > &&sized_range< D< True > const & >))) const expr auto operator[](detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
 CPP_TEMPLATE_AUX_0 (requires ` True &&(forward_range< D< True > const & >||(input_range< D< True > const & > &&sized_range< D< True > const & >))) const expr auto operator[](detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
 CPP_TEMPLATE_AUX_0 (requires ` True &&(forward_range< D< True >>||(input_range< D< True >> &&sized_range< D< True >>))) const expr auto operator[](detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
 CPP_TEMPLATE_AUX_0 (requires ` True &&(forward_range< D< True >>||(input_range< D< True >> &&sized_range< D< True >>))) const expr auto operator[](detail
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
 CPP_TEMPLATE_AUX_0 (requires ` True &&detail::can_empty_< D< True > const >) const expr explicit operator bool() const noexcept(noexcept(ranges::empty(std::declval< D< True > const & >())))
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
 CPP_TEMPLATE_AUX_0 (requires ` True &&detail::can_empty_< D< True >>) const expr explicit operator bool() noexcept(noexcept(ranges::empty(std::declval< D< True > & >())))
 
constexpr auto empty () const noexcept -> bool requires `(detail::has_fixed_size_< Cardinality >) `
 Test whether a range can be empty:
 
view_interfaceoperator= (view_interface &&)=default
 
view_interfaceoperator= (view_interface const &)=default
 
 view_interface (view_interface &&)=default
 
 view_interface (view_interface const &)=default
 

Static Public Member Functions

static constexpr void set_size_ (...) noexcept
 

Public Attributes

data_t data_
 
S size_type n: data_{static_cast<I2 &&>(i)
 
s: data_{static_cast<I2 &&>(i)
 

Additional Inherited Members

- Protected Types inherited from ranges::view_interface< subrange< I, S, K >, same_as< S, unreachable_sentinel_t > ? infinite :K==subrange_kind::sized ? finite :unknown >
using D = meta::invoke< detail::dependent_< B >, subrange< I, S, K > >
 
- Protected Member Functions inherited from ranges::view_interface< subrange< I, S, K >, same_as< S, unreachable_sentinel_t > ? infinite :K==subrange_kind::sized ? finite :unknown >
constexpr subrange< I, S, K > const & derived () const noexcept
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
constexpr subrange< I, S, K > & derived () noexcept