Spec-Zone.ru › C++

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* типа итератора.

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:

  • std::ranges::basic_istream_view
  • std::ranges::lazy_split_view
  • std::ranges::split_view
  • std::ranges::take_while_view

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

Пример

См. также

rbegincrbegin
(C++14)
возвращает обратный итератор к началу контейнера или массива
(функция-шаблон)
ranges::rbegin
(C++20)
возвращает обратный итератор к диапазону
(объект точек кастомизации)
ranges::crbegin
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API