std::weakly_incrementable

Header: <iterator>

For the definition of /is-signed-integer-like/, see is-integer-like .

# Declarations

template< class I >
concept weakly_incrementable =
std::movable<I> &&
requires(I i) {
typename std::iter_difference_t<I>;
requires /*is-signed-integer-like*/<std::iter_difference_t<I>>;
{ ++i } -> std::same_as<I&>; // not required to be equality-preserving
i++; // not required to be equality-preserving
};

(since C++20)

# Defect reports

DRApplied toBehavior as publishedCorrect behavior
P2325R3C++20default_initializable was requirednot required

# See also