std::ranges::view_interface<D>::operator[]
来自 zh.cppreference.net
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 ,但调用该函数始终会导致未定义行为。
示例
|
本节内容不完整
原因:缺少示例 |