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_viewstd::ranges::lazy_split_viewstd::ranges::split_viewstd::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/cpp/ranges/view_interface/back