std::experimental::ranges::Incrementable
来自 cppreference.com
< cpp | experimental | ranges
定义在头文件 <experimental/ranges/iterator> 中 |
||
template< class I > concept bool Incrementable = |
(范围 TS) | |
Incrementable<I>
概念指定了对可以递增(使用前递增和后递增运算符)的类型的要求。递增运算(包括 WeaklyIncrementable
所需的运算)要求是保持等式的,并且该类型要求是 EqualityComparable
。
令 a
和 b
是类型 I
的可增量对象。只有在以下情况下才能满足 Incrementable<I>
- 如果 bool(a == b) 则 bool(a++ == b).
- 如果 bool(a == b) 则 bool(void(a++), a) == ++b).
[编辑] 保持等式
如果给定相同的输入,表达式会产生相同的输出,则该表达式为保持等式的。
- 表达式的输入包括其操作数。
- 表达式的输出包括其结果和表达式修改的所有操作数(如果有)。
要求保持等式的每个表达式都进一步要求是稳定的:在没有对这些输入对象进行显式干预的情况下,对同一个输入对象的两个表达式求值必须具有相同的输出。
除非另有说明,否则在requires-expression 中使用的每个表达式都要求是保持等式的并且是稳定的,并且表达式的求值只能修改其非常数操作数。常数操作数不得修改。
[编辑] 注释
a
等于 b
的要求意味着 ++a
等于 ++b
,允许在 Incrementable
类型中使用多遍算法。