std::experimental::ranges::difference_type
Von cppreference.com
< cpp | experimental | ranges
| 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; } |
(4) | |
| template< class T > requires !requires { typename T::difference_type; } && |
(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
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
spezifiziert, dass ein Semiregular-Typ mit Prä- und Post-Inkrement-Operatoren inkrementiert werden kann(concept) | |
| Kompatibilitäts-Traits-Klasse, die die zugehörigen Typen eines Iterators sammelt (Alias-Vorlage) |