| 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 |