std::experimental::ranges::iterator_category

来自cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
技术规范
文件系统库 (文件系统 TS)
库基础 (库基础 TS)
库基础 2 (库基础 TS v2)
库基础 3 (库基础 TS v3)
并行扩展 (并行 TS)
并行扩展 2 (并行 TS v2)
并发扩展 (并发 TS)
并发扩展 2 (并发 TS v2)
概念 (概念 TS)
范围 (范围 TS)
反射 (反射 TS)
数学特殊函数 (特殊函数 TR)
 
 
迭代器库
迭代器概念
间接可调用概念
                                                  
                                                  
                                                  
常用算法要求
                                                  
概念工具
迭代器工具及运算
迭代器特性
迭代器适配器
流迭代器
 
template< class I >
struct iterator_category { };
(1)
template< class T >
struct iterator_category<T*>;
(2)
template< class T >
struct iterator_category<const T> : iterator_category<T> { };
(3)
template <class T>

  requires requires { typename T::iterator_category; }

struct iterator_category<T>;
(4)

计算类 I 的迭代器类别,若它存在。用户可以对程序定义类型特化 iterator_category

1) 初等模板是空结构体。
2) 对指针的特化。若 T 是对象类型,则提供等于 ranges::random_access_iterator_tag 的成员类型 type 。否则,无成员 type
3) 对 const 限定类型的特化。
4) 对定义公开且可访问的成员类型 iterator_category 的类型的特化。若 T::iterator_category 与命名空间 std 中的迭代器类别标签之一相同或从它派生,则将它映射到描述如下的命名空间 ranges 中的对应标签。否则,提供等于 T::iterator_category 的成员类型 type
  • T::iterator_categorystd::random_access_iterator_tag 相同或自之派生,则提供等于 ranges::random_access_iterator_tag 的成员类型 type
  • 否则,若 T::iterator_categorystd::bidirectional_iterator_tag 相同或自之派生,则提供等于 ranges::bidirectional_iterator_tag 的成员类型 type
  • 否则,若 T::iterator_categorystd::forward_iterator_tag 相同或自之派生,则提供等于 ranges::forward_iterator_tag 的成员类型 type
  • 否则,若 T::iterator_categorystd::input_iterator_tag 相同或自之派生,则提供等于 ranges::input_iterator_tag 的成员类型 type
  • 否则,若 T::iterator_categorystd::output_iterator_tag 相同或自之派生,则无成员 type

辅助别名模版

template< class T >
using iterator_category_t = typename ranges::iterator_category<T>::type;
(范围 TS)

示例

参阅

用于指示迭代器类别的空类类型
(类)
用于指示迭代器类别的空类
(类)
汇集迭代器的关联类型的兼容性特性类
(别名模板)