Namespaces
Variants

std::ranges::view_interface<D>:: back

From cppreference.net
Ranges library
Range adaptors
constexpr decltype ( auto ) back ( )
требует ranges:: bidirectional_range < D > && ranges:: common_range < D > ;
(1) (начиная с C++20)
constexpr decltype ( auto ) back ( ) const
требует ranges:: bidirectional_range < const D > && ranges:: common_range < const D > ;
(2) (начиная с C++20)

Стандартная реализация функции-члена back() возвращает последний элемент в представлении производного типа. Возвращается ли элемент по значению или по ссылке, зависит от operator * типа итератора.

1) Пусть derived будет static_cast < D & > ( * this ) . Эквивалентно return * ranges:: prev ( ranges:: end ( derived ) ) ; . Поведение не определено, если empty() равно true (т.е. начальный итератор сравнивается с сентинелом), даже если итератор, полученный таким же способом, разыменовываем.
2) То же, что и (1) , за исключением того, что derived является static_cast < const D & > ( * this ) .

Содержание

Возвращаемое значение

Последний элемент в представлении.

Примечания

В C++20 ни один тип, производный от std::ranges::view_interface в стандартной библиотеке, не предоставляет собственную функцию-член back() .

Однако следующие производные типы не могут использовать реализации по умолчанию, так как они никогда не удовлетворяют ни bidirectional_range , ни common_range :

Унаследованная back() функция-член доступна для std::ranges::empty_view , но вызов этой функции всегда приводит к неопределённому поведению.

Пример

Смотрите также

возвращает обратный итератор на начало контейнера или массива
(шаблон функции)
возвращает обратный итератор на диапазон
(объект точки настройки)
возвращает обратный итератор на диапазон только для чтения
(объект точки настройки)