Namespaces
Variants

std:: incrementable

From es.cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
Definido en el encabezado <iterator>
template < class I >

concepto incrementable =
std:: regular < I > &&
std:: weakly_incrementable < I > &&
requires ( I i ) {
{ i ++ } - > std:: same_as < I > ;

} ;
(desde C++20)

Este concepto especifica requisitos sobre tipos que pueden ser incrementados con los operadores de preincremento y postincremento, cuyas operaciones de incremento son equality-preserving , y el tipo es std::equality_comparable .

A diferencia de std::weakly_incrementable , que solo admite algoritmos de una sola pasada, los algoritmos unidireccionales multipasada pueden utilizarse con tipos que modelan std::incrementable .

Requisitos semánticos

I modela std::incrementable solo si dados dos objetos incrementables a y b de tipo I :

  • bool ( a == b ) implica bool ( a ++ == b ) , y
  • bool ( a == b ) implica bool ( ( ( void ) a ++ , a ) == ++ b ) .

Preservación de igualdad

Las expresiones declaradas en las requires expressions de los conceptos de la biblioteca estándar deben ser equality-preserving (excepto cuando se indique lo contrario).

Véase también

especifica que un semiregular tipo puede ser incrementado con operadores de pre- y post-incremento
(concepto)
(C++20)
especifica que un tipo es el mismo que otro tipo
(concepto)