std::ranges::view_interface<D>::back
constexpr decltype(auto) back()
requires ranges::bidirectional_range<D> && ranges::common_range<D>; |
(1) | (since C++20) |
constexpr decltype(auto) back() const
requires ranges::bidirectional_range<const D> && ranges::common_range<const D>; |
(2) | (since C++20) |
Реализация по умолчанию функции-члена back() возвращает последний элемент в представлении производного типа. Возвращение элемента по значению или ссылке зависит от operator* типа итератора.
derived равно static_cast<D&>(*this). Эквивалентно return *ranges::prev(ranges::end(derived));. Поведение не определено, если empty() равно true (т.е. итератор начала совпадает с стоп-итератором), даже если полученный итератор можно разыменовать.derived равно static_cast<const D&>(*this).Параметры
(нет)
Возвращаемое значение
Последний элемент в представлении.
Примечания
В C++20 ни один тип, производный от std::ranges::view_interface в стандартной библиотеке, не предоставляет собственной функции-члена back().
Однако следующие производные типы не могут использовать реализацию по умолчанию, так как они никогда не удовлетворяют ни bidirectional_range, ни common_range:
-
std::ranges::basic_istream_view -
std::ranges::lazy_split_view -
std::ranges::split_view -
std::ranges::take_while_view
Наследованная функция-член back() доступна для std::ranges::empty_view, но вызов её всегда приводит к неопределённому поведению.
Пример
См. также
|
(C++14) |
возвращает обратный итератор к началу контейнера или массива (функция-шаблон) |
|
(C++20) |
возвращает обратный итератор к диапазону (объект точек кастомизации) |
|
(C++20) |
возвращает обратный итератор к константному диапазону (объект точек кастомизации) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/view_interface/back