Namespaces
Variants

std::ranges::view_interface<D>:: operator[]

From cppreference.net
Ranges library
Range adaptors
template < ranges:: random_access_range R = D >
constexpr decltype ( auto ) operator [ ] ( ranges:: range_difference_t < R > n ) ;
(1) (начиная с C++20)
template < ranges:: random_access_range R = const D >
constexpr decltype ( auto ) operator [ ] ( ranges:: range_difference_t < R > n ) const ;
(2) (начиная с C++20)

Реализация по умолчанию функции-члена operator [ ] получает элемент по указанному смещению относительно начального итератора, повторно используя operator [ ] типа итератора.

1) Пусть derived будет static_cast < D & > ( * this ) . Эквивалентно return ranges:: begin ( derived ) [ n ] ; .
2) То же, что и (1) , за исключением того, что derived является static_cast < const D & > ( * this ) .

Содержание

Параметры

n - позиция возвращаемого элемента

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

Элемент со смещением n относительно начального итератора.

Примечания

В C++20 ни один тип, производный от std::ranges::view_interface в стандартной библиотеке, не предоставляет собственной функции-члена operator [ ] .

Однако следующие производные типы не могут использовать реализации по умолчанию, так как они никогда не удовлетворяют random_access_range :

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

Пример