std::ranges::view_interface<D>::back
constexpr decltype(auto) back()
requires ranges::bidirectional_range<D> && ranges::common_range<D>;
|
(1) | (начиная с C++20) |
constexpr decltype(auto) back() const
requires ranges::bidirectional_range<const D> && ranges::common_range<const D>;
|
(2) | (начиная с C++20) |
Реализация по умолчанию функции-элемента back() возвращает последний элемент представления производного типа. Возвращается ли элемент по значению или по ссылке, зависит от operator* типа итератора.
Эквивалентно return *ranges::prev(ranges::end(derived));, где derived является:
static_cast<D&>(*this)static_cast<const D&>(*this)
|
Если |
(до C++26) |
|
Если
|
(начиная с C++26) |
Возвращаемое значение
Последний элемент в представлении.
Примечания
В 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)
|
возвращает обратный итератор на диапазон только для чтения
(объект точки настройки) |