Namensräume
Varianten
Aktionen

std::experimental::ranges::value_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 value_type {};
(1)
template< class T >
struct value_type<T*>;
(2)
template< class I >

    requires std::is_array<I>::value

struct value_type<I> : value_type<std::decay_t<I>> {};
(3)
template< class T >
struct value_type<const T> : value_type<std::decay_t<T>> {};
(4)
template< class T >

    requires requires { typename T::value_type; }

struct value_type<T>;
(5)
template< class T >

    requires requires { typename T::element_type; }

struct value_type<T>;
(6)

Berechnet den zugehörigen Werttyp des Typs I, falls vorhanden. Benutzer können value_type für einen programldefinierten Typ spezialisieren.

1) Primäre Template ist eine leere Struktur.
2) Spezialisierung für Zeiger. Wenn T ein Objekttyp ist, wird ein Mitgliedstyp type bereitgestellt, der gleich std::remove_cv_t<T> ist. Andernfalls gibt es kein Mitglied type.
3) Spezialisierung für Array-Typen.
4) Spezialisierung für const-qualifizierte Typen.
5) Spezialisierung für Typen, die einen öffentlichen und zugänglichen Mitgliedstyp value_type definieren. Wenn T::value_type ein Objekttyp ist, wird ein Mitgliedstyp type bereitgestellt, der gleich T::value_type ist. Andernfalls gibt es kein Mitglied type.
6) Spezialisierung für Typen, die einen öffentlichen und zugänglichen Mitgliedstyp element_type definieren (z. B. std::shared_ptr). Wenn T::element_type ein Objekttyp ist, wird ein Mitgliedstyp type bereitgestellt, der gleich std::remove_cv_t<typename T::element_type> ist. Andernfalls gibt es kein Mitglied type.

Inhalt

[bearbeiten] Hilfs-Alias-Template

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

[bearbeiten] Hinweise

Wenn ein Typ sowohl ein value_type-Mitglied als auch ein element_type-Mitglied enthält, sind die Spezialisierungen (5) und (6) mehrdeutig.

value_type ist für die Verwendung mit Readable-Typen wie Iteratoren vorgesehen. Es ist nicht für die Verwendung mit Bereichen vorgesehen.

[bearbeiten] Beispiel

[bearbeiten] Siehe auch

spezifiziert, dass ein Typ durch Anwenden des Operators * lesbar ist
(concept) [bearbeiten]
Kompatibilitäts-Traits-Klasse, die die zugehörigen Typen eines Iterators sammelt
(Alias-Vorlage)[bearbeiten]