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

来自cppreference.com
 
 
范围库
范围适配器
 
 
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)derivedstatic_cast<D&>(*this)。等价于 return ranges::begin(derived)[n];
2)(1),但 derivedstatic_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 可用,但对它的调用始终导致未定义行为。

示例