Defined in header
concept weakly_incrementable =
where /*is-signed-integer-like*/<I> is true if and only if
I is a signed-integer-like type (see below).
This concept specifies requirements on types that can be incremented with the pre- and post-increment operators, but those increment operations are not necessarily equality-preserving, and the type itself is not required to be std::equality_comparable.
std::weakly_incrementable types, a == b does not imply that ++a == ++b. Algorithms on weakly incrementable types must be single-pass algorithms. These algorithms can be used with istreams as the source of the input data through std::istream_iterator.
 Semantic requirements
std::weakly_incrementable only if, for an object
i of type
- The expressions ++i and i++ have the same domain,
iis incrementable, then both ++i and i++ advance
iis incrementable, then std::addressof(++i) == std::addressof(i).
 Integer-like types
An integer-like type is an (possibly cv-qualified) integer type (except for cv bool) or an implementation-provided (not user-provided) class that behaves like an integer type, including all operators, implicit conversions, and std::numeric_limits specializations. If an integer-like type represents only non-negative values, it is unsigned-integer-like, otherwise it is signed-integer-like.
 Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
|DR||Applied to||Behavior as published||Correct behavior|
|LWG 3467||C++20||bool was considered as an integer-like type||excluded|
 See also
| specifies that the increment operation on a |