Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
constexpr decltype ( auto ) front ( )
требует ranges:: forward_range < D > ;
(1) (начиная с C++20)
constexpr decltype ( auto ) front ( ) const
требует ranges:: forward_range < const D > ;
(2) (начиная с 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 , но вызов этой функции всегда приводит к неопределённому поведению.

Пример

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

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