Spec-Zone.ru › C++

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

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:

  • std::ranges::basic_istream_view
  • std::ranges::filter_view
  • std::ranges::join_view
  • std::ranges::lazy_split_view
  • std::ranges::split_view

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

Пример

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

Spec-Zone.ru

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