Namespaces
Variants

std::experimental::ranges:: OutputIterator

From cppreference.net
template < class I, class T >

concept bool OutputIterator =
Iterator < I > && Writable < I, T > &&
requires ( I i, T && t ) {
* i ++ = std:: forward < T > ( t ) ; // 不要求保持相等性

} ;
(ranges TS)

OutputIterator 概念是 Iterator 的细化,增加了必须能够写入由 T 编码的类型和值类别的值的要求(通过 Writable 实现)。不要求满足 EqualityComparable

E 为满足 decltype ( ( E ) ) T 的表达式, i 为类型 I 的可解引用对象。当且仅当 * i ++ = E ; 的效果等同于 * i = E ; ++ i ; 时,满足 OutputIterator<I, T> 要求。

等值保持性

表达式若在给定相等输入时产生相等输出,则称其具有 等值保持性

  • 表达式的输入由其操作数构成。
  • 表达式的输出由其结果及所有被该表达式修改的操作数(如有)构成。

每个要求保持相等性的表达式还必须满足 稳定性 要求:对此类表达式的两次求值,若输入对象相同,则输出结果必须相等,除非其间显式修改了这些输入对象。

注释

与C++标准中的输出迭代器要求不同,Ranges TS中的 OutputIterator 不要求必须定义迭代器类别标签。

输出迭代器上的算法应当是单遍的。