Namensräume
Varianten
Aktionen

std::experimental::ranges::difference_type

Von cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
Iterator-Bibliothek
Iterator-Konzepte
Indirekte aufrufbare Konzepte
                                                  
                                                  
                                                  
Gemeinsame Algorithmus-Anforderungen
                                                  
Konzept-Dienstprogramme
Iterator-Dienstprogramme und -Operationen
Iterator-Traits
Iterator-Adapter
Stream-Iteratoren
 
Definiert in Header <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)

Berechnet den zugehörigen Differenztyp des Typs I, falls vorhanden. Benutzer können difference_type für einen vom Programm definierten Typ spezialisieren.

1) Primäre Template ist eine leere Struktur.
2) Spezialisierung für Zeiger. Wenn T ein Objekttyp ist, stellt er einen Membertyp type bereit, der gleich std::ptrdiff_t ist. Andernfalls gibt es keinen Member type.
3) Spezialisierung für const-qualifizierte Typen.
4) Spezialisierung für Typen, die einen öffentlichen und zugänglichen Membertyp difference_type definieren. Stellt einen Membertyp type bereit, der gleich T::difference_type ist.
5) Spezialisierung für Typen, die keinen öffentlichen und zugänglichen Membertyp difference_type definieren, aber Subtraktion unterstützen. Stellt einen Membertyp type bereit, der gleich std::make_signed_t<decltype(std::declval<T>() - std::declval<T>())> ist.

[bearbeiten] Hilfsalias-Schablone

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

[bearbeiten] Beispiel

[bearbeiten] Siehe auch

spezifiziert, dass ein Semiregular-Typ mit Prä- und Post-Inkrement-Operatoren inkrementiert werden kann
(concept) [bearbeiten]
Kompatibilitäts-Traits-Klasse, die die zugehörigen Typen eines Iterators sammelt
(Alias-Vorlage)[bearbeiten]