ranges::subrange< I, S, K > Struct Template Reference
Views
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)
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_interface & | operator= (view_interface &&)=default
view_interface & | operator= (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 | 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