Spec-Zone.ru › C++

std::ranges::view_interface<D>::front

constexpr decltype(auto) front()
    requires ranges::forward_range<D>;
(1) (начиная с C++20)
constexpr decltype(auto) front() const
    requires ranges::forward_range<const D>;
(2) (начиная с C++20)

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

Эквивалентно return *ranges::begin(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, не предоставляет собственную функцию-член front(). Почти все эти типы используют реализацию по умолчанию.

Заметным исключением является std::ranges::basic_istream_view. Поскольку он никогда не удовлетворяет требованиям forward_range, представление не может использовать унаследованный front().

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

Пример

См. также

begincbegin
(C++11)(C++14)
возвращает итератор на начало контейнера или массива
(шаблон функции)
ranges::begin
(C++20)
возвращает итератор на начало диапазона
(объект-точка настройки)
ranges::cbegin
(C++20)
возвращает итератор на начало диапазона только для чтения
(объект-точка настройки)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/ranges/view_interface/front

Spec-Zone.ru

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