Namensräume
Varianten
Aktionen

std::iter_value_t, std::iter_reference_t, std::iter_const_reference_t, std::iter_difference_t, std::iter_rvalue_reference_t, std::iter_common_reference_t

Von cppreference.com
< cpp‎ | iterator
 
 
Iterator-Bibliothek
Iterator-Konzepte
Iterator-Primitive
iter_value_titer_difference_titer_reference_titer_const_reference_titer_rvalue_reference_titer_common_reference_t
(C++20)(C++20)(C++20)(C++23)(C++20)(C++20)
Algorithmus-Konzepte und Hilfsprogramme
Indirekte aufrufbare Konzepte
Gemeinsame Algorithmus-Anforderungen
(C++20)
(C++20)
(C++20)
Dienstprogramme
(C++20)
Iterator-Adapter
Bereichszugriff
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
Definiert in Header <iterator>
template< class T >
using iter_value_t = /* siehe unten */;
(1) (seit C++20)
template< /*dereferenceable*/ T >
using iter_reference_t = decltype(*std::declval<T&>());
(2) (seit C++20)
template< std::indirectly_readable T >

using iter_const_reference_t =
    std::common_reference_t<const std::iter_value_t<T>&&,

                            std::iter_reference_t<T>>;
(3) (seit C++23)
template< class T >
using iter_difference_t = /* siehe unten */;
(4) (seit C++20)
template< /*dereferenceable*/ T>

    requires /* siehe unten */
using iter_rvalue_reference_t =

    decltype(ranges::iter_move(std::declval<T&>()));
(5) (seit C++20)
template< std::indirectly_readable T >

using iter_common_reference_t =
    std::common_reference_t<std::iter_reference_t<T>,

                            /*indirect-value-t*/<T>>;
(6) (seit C++20)
Hilfsschablonen
template< class T >
concept /*dereferenceable*/ = /* siehe unten */;
(7) (nur Exposition*)
template< std::indirectly_readable T >
using /*indirect-value-t*/ = /* siehe unten */;
(8) (nur Exposition*)

Berechnet die zugehörigen Typen eines Iterators.

1) Berechnet den Werttyp von T.
2) Berechnet den Referenztyp von T.
3) Berechnet den const-Referenztyp von T.
4) Berechnet den Differenztyp von T.
5) Berechnet den Rvalue-Referenztyp von T. Die Bedingung für diese Alias-Template ist erfüllt, wenn und nur wenn der Ausdruck ranges::iter_move(std::declval<T&>()) gültig ist und einen referenzierbaren Typ hat.
6) Berechnet den gemeinsamen Referenztyp von T. Dies ist der gemeinsame Referenztyp zwischen seinem Referenztyp und einer lvalue-Referenz auf seinen Werttyp.
7) Das expositions-nur-Konzept dereferenceable ist erfüllt, wenn und nur wenn der Ausdruck *std::declval<T&>() gültig ist und einen referenzierbaren Typ hat.
8) Das expositions-nur-Alias-Template indirect-value-t bezeichnet Folgendes:
  • std::invoke_result_t<Proj&, /*indirect-value-t*/<I>>, wenn T gleich std::projected<I, Proj> für einige Typen I und Proj ist.
  • Andernfalls std::iter_value_t<T>&.

[bearbeiten] Defect reports

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
P2609R3 C++20 std::iter_common_reference_t wurde in Bezug auf
std::iter_value_t<T>& definiert, was falsch war.
std::projected Typen, die in Rvalue-Referenztypen projizieren,
definiert in Bezug auf
/*indirect-value-t*/<T>
um solche Fälle zu behandeln.

[bearbeiten] Siehe auch

spezifiziert, dass ein Typ durch Anwendung des Operators * indirekt lesbar ist
(Konzept) [bearbeiten]
spezifiziert, dass ein semiregular-Typ mit Prä- und Post-Inkrementoperatoren inkrementiert werden kann
(Konzept) [bearbeiten]
berechnet den Werttyp eines indirectly_readable-Typs
(Klassenschablone) [bearbeiten]
berechnet den Differenztyp eines weakly_incrementable-Typs
(Klassenschablone) [bearbeiten]
bietet eine einheitliche Schnittstelle zu den Eigenschaften eines Iterators
(Klassenschablone) [bearbeiten]
ermittelt Iterator- und Sentinel-Typen eines Ranges
(Alias-Template)[edit]
ermittelt Referenztypen eines Ranges
(Alias-Template)[edit]
ermittelt Größen-, Differenz- und Wertetypen eines Ranges
(Alias-Template)[edit]