25 Ranges library [ranges]

25.5 Range utilities [range.utility]

25.5.3 View interface [view.interface]

25.5.3.2 Members [view.interface.members]

constexpr decltype(auto) front() requires forward_range<D>; constexpr decltype(auto) front() const requires forward_range<const D>;
Hardened preconditions: !empty() is true.
Effects: Equivalent to: return *ranges​::​begin(derived());
constexpr decltype(auto) back() requires bidirectional_range<D> && common_range<D>; constexpr decltype(auto) back() const requires bidirectional_range<const D> && common_range<const D>;
Hardened preconditions: !empty() is true.
Effects: Equivalent to: return *ranges​::​prev(ranges​::​end(derived()));
template<random_access_range R = D> requires sized_range<R> constexpr decltype(auto) at(range_difference_t<R> n); template<random_access_range R = const D> requires sized_range<R> constexpr decltype(auto) at(range_difference_t<R> n) const;
Returns: (*this)[n].
Throws: out_of_range if n < 0 is true or n >= ranges​::​distance(derived()) is true.