C++ 具名要求:遗留向前迭代器 (LegacyForwardIterator)
遗留向前迭代器 (LegacyForwardIterator) 是能从所指向的元素读取数据的遗留迭代器 (LegacyIterator) 。
不同于遗留输入迭代器 (LegacyInputIterator) 和遗留输出迭代器 (LegacyOutputIterator) ,它可被用于多趟算法。
要求
若达成下列条件,则类型 It 满足遗留向前迭代器 (LegacyForwardIterator) 
-  类型 
It满足遗留输入迭代器 (LegacyInputIterator) -  类型 
It满足可默认构造 (DefaultConstructible) -  类型 
It的对象提供下文所述的多趟保证 -  类型 
std::iterator_traits<It>::reference必须恰为 
-  若 
It满足遗留输出迭代器 (LegacyOutputIterator) (It可变)则为T& -  否则(
It为常量),为const T&, 
-  若 
 - (其中 
T是 std::iterator_traits<It>::value_type 所指代的类型) 
- 在同一底层序列上的所有迭代器和值初始化迭代器 (C++14 起)中定义等于和不等于比较。
 
而且,给定
-  
i,为It类型的可解引用迭代器 -  
reference,为std::iterator_traits<It>::reference所指代的类型 
则下列表达式必须合法且拥有其指定的效果
| 表达式 | 返回类型 | 等价表达式 | 注意 | 
|---|---|---|---|
| i++ | It | It ip=i; ++i; return ip; | |
| *i++ | reference | 
可变的(mutable)遗留向前迭代器 (LegacyForwardIterator) 是还额外满足遗留输出迭代器 (LegacyOutputIterator) 要求的遗留向前迭代器 (LegacyForwardIterator) 。
多趟保证
给定 It 类型的可解引用迭代器 a 和 b
-  若 
a与b比较相等(a == b可按语境转换为true),则要么都不可解引用,要么*a与*b是绑定到同一对象的引用 -  若 
*a与*b指代相同的对象,则。 -  通过可变
ForwardIterator进行赋值不会使迭代器失效(隐含地因为reference定义为真引用) -  自增 
a的副本不改变从a读取的值(正式而言,要么It是原生指针类型,要么表达式 (void)++It(a), *a 等价于表达式 *a) -  
a == b蕴含++a == ++b 
孤立迭代器值初始化的遗留向前迭代器 (LegacyForwardIterator) 表现类似某个未指定空容器的末尾后迭代器:它与所有值初始化的同类型遗留向前迭代器 (LegacyForwardIterator) 比较为相等。  | 
(C++14 起) | 
概念为了定义 std::iterator_traits,定义了以下仅用于阐释的概念: 
 其中仅用于阐释的概念   | 
(C++20 起) | 
参阅
|    (C++20)  | 
  指定 input_iterator 为向前迭代器,支持相等比较与多趟操作  (概念)  |