Spec-Zone.ru › C++

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

constexpr decltype(auto) front()
    requires ranges::forward_range<D>;
(1) (since C++20)
constexpr decltype(auto) front() const
    requires ranges::forward_range<const D>;
(2) (since C++20)

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

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

Параметры

(нет)

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

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

Примечания

В 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/w/cpp/ranges/view_interface/front

Spec-Zone.ru

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