A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://en.cppreference.com/w/cpp/algorithm/../experimental/ranges/iterator/WeaklyIncrementable.html below:

std::experimental::ranges::WeaklyIncrementable - cppreference.com

template< class I >

concept bool WeaklyIncrementable =
    Semiregular<I> &&
    requires(I i) {
        typename ranges::difference_type_t<I>;
        requires SignedIntegral<ranges::difference_type_t<I>>;
        { ++i } -> Same<I>&; /* not required to be equality preserving */
        i++; /* not required to be equality preserving */

    };
(ranges TS)

The concept WeaklyIncrementable<I> specifies the requirements on a type that can be incremented (with the pre- and post-increment operators). The increment operations need not be equality-preserving, and the type need not be EqualityComparable.

Let i be an object of type I. i is said to be incrementable if it is in the domain of both pre- and post-increment. WeaklyIncrementable<I> is satisfied only if:

[edit] Equality preservation

An expression is equality preserving if it results in equal outputs given equal inputs.

Every expression required to be equality preserving is further required to be stable: two evaluations of such an expression with the same input objects must have equal outputs absent any explicit intervening modification of those input objects.

[edit] Notes

For WeaklyIncrementable types, a equals b does not imply that ++a equals ++b. Algorithms on such types should be single pass and never attempt to pass through the same value twice.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4