std::weakly_incrementable
来自 cppreference.cn
定义于头文件 <iterator> |
||
template< class I > concept weakly_incrementable = |
(自 C++20 起) | |
关于 /*is-signed-integer-like*/ 的定义,见 is-integer-like
。
此概念指定了可以与前缀和后缀递增运算符一起递增的类型的要求,但这些递增操作不一定是保等值 (equality-preserving) 的,并且该类型本身也不一定需要是 std::equality_comparable。
对于 std::weakly_incrementable
类型,a == b 并不意味着 ++a == ++b。弱递增类型上的算法必须是单遍算法。这些算法可以通过 std::istream_iterator 与 istream 一起用作输入数据的来源。
[编辑] 语义要求
对于类型 I
的对象 i,仅当满足以下所有条件时,I
才建模 std::weakly_incrementable
- 表达式 ++i 和 i++ 具有相同的域。
- 如果 i 是可递增的,则 ++i 和 i++ 都会推进 i。
- 如果 i 是可递增的,则 std::addressof(++i) == std::addressof(i)。
[编辑] 缺陷报告
以下行为变更缺陷报告已追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 发布时的行为 | 正确的行为 |
---|---|---|---|
P2325R3 | C++20 | 需要 default_initializable |
不需要 |
[编辑] 参见
(C++20) |
指定 weakly_incrementable 类型上的递增操作是保等值 (equality-preserving) 的,并且该类型是 equality_comparable 的(概念) |