2.0 KiB
[view.interface.members]
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](range.refinements#concept:forward_range "25.4.6 Other range refinements [range.refinements]")<D>; constexpr decltype(auto) front() const requires [forward_range](range.refinements#concept:forward_range "25.4.6 Other range refinements [range.refinements]")<const D>;
Hardened preconditions: !empty() is true.
Effects: Equivalent to: return *ranges::begin(derived());
constexpr decltype(auto) back() requires [bidirectional_range](range.refinements#concept:bidirectional_range "25.4.6 Other range refinements [range.refinements]")<D> && [common_range](range.refinements#concept:common_range "25.4.6 Other range refinements [range.refinements]")<D>; constexpr decltype(auto) back() const requires [bidirectional_range](range.refinements#concept:bidirectional_range "25.4.6 Other range refinements [range.refinements]")<const D> && [common_range](range.refinements#concept:common_range "25.4.6 Other range refinements [range.refinements]")<const D>;
Hardened preconditions: !empty() is true.
Effects: Equivalent to: return *ranges::prev(ranges::end(derived()));