std::incrementable(3) | C++ Standard Libary | std::incrementable(3) |
NAME¶
std::incrementable - std::incrementable
Synopsis¶
Defined in header <iterator>
template< class I >
concept incrementable =
std::regular<I> &&
std::weakly_incrementable<I> && (since C++20)
requires(I i) {
{ i++ } -> std::same_as<I>;
};
This concept specifies requirements on types that can be incremented with the
pre-
and post-increment operators, whose increment operations are
equality-preserving,
and the type is std::equality_comparable.
Unlike with std::weakly_incrementable, which only support single-pass
algorithms,
multi-pass one-directional algorithms can be used with types that model
std::incrementable.
Semantic requirements
I models std::incrementable only if given any two incrementable objects a and
b of
type I:
* bool(a == b) implies bool(a++ == b), and
* bool(a == b) implies bool(((void)a++, a) == ++b).
Equality preservation
Expressions declared in requires expressions of the standard library concepts
are
required to be equality-preserving (except where stated otherwise).
See also¶
weakly_incrementable specifies that a semiregular type can be
incremented with pre-
(C++20) and post-increment operators
(concept)
same_as specifies that a type is the same as another type
(C++20) (concept)
2024.06.10 | http://cppreference.com |