std::weakly_incrementable
来自 cppreference.cn
< cpp | 迭代器 (iterator)
定义于头文件 <iterator> |
||
template< class I > concept weakly_incrementable = |
(C++20 起) | |
关于 /*is-signed-integer-like*/ 的定义,请参见 is-integer-like
。
此概念规定了可通过前置和后置增量运算符递增的类型的要求,但这些增量操作不一定保持等价性,并且类型本身不要求是 std::equality_comparable。
对于 std::weakly_incrementable
类型,a == b 不表示 ++a == ++b。对弱可递增类型操作的算法必须是单趟算法。这些算法可以通过 std::istream_iterator 与输入流一起用作输入数据的源。
[编辑] 语义要求
对于类型 I
的对象 i,仅当满足以下所有条件时,I
才建模 std::weakly_incrementable
:
- 表达式 ++i 和 i++ 具有相同的定义域。
- 如果 i 可递增,则 ++i 和 i++ 都会使 i 前进。
- 如果 i 可递增,则 std::addressof(++i) == std::addressof(i)。
[编辑] 缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 发布时的行为 | 正确的行为 |
---|---|---|---|
P2325R3 | C++20 | default_initializable 是必需的 |
未要求 |
[编辑] 参见
(C++20) |
指定 weakly_incrementable 类型的增量操作是保持等价性的,并且该类型是equality_comparable 的(概念) |