Namespaces
Variants

std::experimental::ranges:: difference_type

From cppreference.net
Défini dans l'en-tête <experimental/ranges/iterator>
template < class I >
struct difference_type { } ;
(1)
template < class T >
struct difference_type < T * > ;
(2)
template < class T >
struct difference_type < const T > : difference_type < std:: decay_t < T >> { } ;
(3)
template < class T >

requires requires { typename T :: difference_type ; }

struct difference_type < T > ;
(4)
template < class T >

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

struct difference_type < T > ;
(5)

Calcule le type de différence associé du type I , le cas échéant. Les utilisateurs peuvent spécialiser difference_type pour un type défini par le programme.

1) Le gabarit principal est une structure vide.
2) Spécialisation pour les pointeurs. Si T est un type objet, fournit un type membre type égal à std::ptrdiff_t . Sinon, il n'y a pas de membre type .
3) Spécialisation pour les types qualifiés const.
4) Spécialisation pour les types qui définissent un type membre public et accessible difference_type . Fournit un type membre type égal à T::difference_type .
5) Spécialisation pour les types qui ne définissent pas un type membre public et accessible difference_type mais qui prennent en charge la soustraction. Fournit un type membre type égal à std:: make_signed_t < decltype ( std:: declval < T > ( ) - std:: declval < T > ( ) ) > .

Modèle d'alias d'assistance

template < class T >
using difference_type_t = typename ranges :: difference_type < T > :: type ;
(TS ranges)

Exemple

Voir aussi

spécifie qu'un type Semiregular peut être incrémenté avec les opérateurs de pré-incrémentation et post-incrémentation
(concept)
classe de traits de compatibilité qui collecte les types associés d'un itérateur
(alias de modèle)