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

< cpp‎ | ranges‎ | view interface

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::common_view
- std::ranges::filter_view
- std::ranges::join_view
- std::ranges::split_view

继承的 operator[] 成员函数对 std::ranges::empty_view 可用，但对它的调用始终导致未定义行为。

### 示例

| 本节未完成 原因：暂无示例