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

Spec-Zone.ru

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