std::ranges::range
定义于头文件 <ranges>
|
||
template< class T > concept range = requires(T&& t) { |
||
range
概念定义允许通过指代元素范围的迭代器和哨位,在其元素上迭代的类型。
语义要求
给定满足 decltype((E)) 为 T 的表达式 E , T 实现 range 仅若:
- [ranges::begin(E), ranges::end(E)) 代表范围,且
- ranges::begin(E) 与 ranges::end(E) 均有均摊常量时间复杂度且不修改,且
- 若 ranges::begin(E) 实现 forward_iterator ,则 ranges::begin(E) 保持相等性(换言之,向前迭代器支持多趟算法)
注意:在上述定义中,要求的表达式 ranges::begin(std::forward<T>(t))
与 ranges::end(std::forward<T>(t))
不要求隐式表达式变种。