Namespaces
Variants

std:: incrementable_traits

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
(deprecated in C++17)
incrementable_traits
(C++20)


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 >
struct incrementable_traits { } ;
(1) (desde C++20)
template < class T >

requires std:: is_object_v < T >

struct incrementable_traits < T * > ;
(2) (desde C++20)
template < class T >

struct incrementable_traits < const T >

: incrementable_traits < T > { } ;
(3) (desde C++20)
template < class T >

requires requires { typename T :: difference_type ; }

struct incrementable_traits < T > ;
(4) (desde C++20)
template < class T >

requires ( ! requires { typename T :: difference_type ; } ) &&
requires ( const T & a, const T & b ) { { a - b } - > std:: integral ; }

struct incrementable_traits < T > ;
(5) (desde C++20)

Calcula el tipo de diferencia asociado del tipo I , si existe. Un programa puede especializar incrementable_traits para un tipo definido por el programa .

1) La plantilla primaria es una estructura vacía.
2) Especialización para punteros.
Proporciona un tipo miembro difference_type igual a std::ptrdiff_t .
3) Especialización para tipos calificados con const.
4) Especialización para tipos que definen un tipo miembro público y accesible difference_type .
Proporciona un tipo miembro difference_type igual que T::difference_type .
5) Especialización para tipos que no definen un tipo miembro público y accesible difference_type pero sí admiten la resta.
Proporciona un tipo miembro difference_type igual a std:: make_signed_t < decltype ( std:: declval < T > ( ) - std:: declval < T > ( ) ) > . La regla de variaciones de expresión implícita (ver abajo) se aplica a la expresión a - b .

Variaciones de expresión implícita

Una requires expresión que utiliza una expresión que no es modificadora para algún operando constante lvalue también requiere variaciones de expresión implícitas .

Ejemplo

Véase también

especifica que un tipo semiregular puede incrementarse con operadores de preincremento y postincremento
(concepto)
calcula los tipos asociados de un iterador
(plantilla de alias)
proporciona una interfaz uniforme para las propiedades de un iterador
(plantilla de clase)