std::experimental::ranges::WeaklyIncrementable
来自 cppreference.cn
< cpp | experimental | ranges
template< class I > concept bool WeaklyIncrementable = |
(ranges TS) | |
概念 WeaklyIncrementable<I>
指定了可以递增(使用前置和后置递增运算符)的类型的要求。递增操作不必保持相等性,且该类型不必是 EqualityComparable
。
令 i 是类型 I
的对象。i 被称为是 可递增的 (incrementable),如果它在前置递增和后置递增的域中。WeaklyIncrementable<I>
仅在以下情况满足:
- ++i 和 i++ 具有相同的域;
- 如果 i 是可递增的,那么
- ++i 和 i++ 都将 i 推进到下一个元素;且
- ++i 引用与 i 相同的对象。
[编辑] 相等性保持
如果一个表达式在给定相等输入时产生相等输出,则称其为保持相等性。
- 表达式的输入由其操作数组成。
- 表达式的输出由其结果以及被表达式修改的所有操作数(如果有的话)组成。
所有要求保持相等性的表达式还必须是稳定的:在没有显式介入修改输入对象的情况下,对具有相同输入对象的表达式的两次求值必须产生相等的输出。
[编辑] 注意
对于 WeaklyIncrementable
类型,a 等于 b 并不意味着 ++a 等于 ++b。对这类类型操作的算法应该是单趟的,并且永远不要尝试两次通过相同的值。