Spec-Zone.ru › C++

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 — это:

1) static_cast<D&>(*this)
2) static_cast<const D&>(*this)

Если empty() имеет значение true, поведение не определено.

(до C++26)

Если empty() имеет значение true:

  • Если реализация использует усиленную защиту, происходит нарушение контракта.
  • Если реализация не использует усиленную защиту, поведение не определено.
(начиная с 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, но её вызов всегда приводит к неопределённому поведению.

Пример

См. также

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/cpp/ranges/view_interface/back

Spec-Zone.ru

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