Espacios de nombres
Variantes
Acciones

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

De cppreference.com
< cpp‎ | iterator
 
 
Biblioteca de iteradores
Conceptos de iteradores
Primitivas de iteradores
iter_value_titer_difference_titer_reference_titer_rvalue_reference_titer_common_reference_t
(C++20)(C++20)(C++20)(C++20)(C++20)

Conceptos de algoritmos y servicios
Conceptos invocables indirectos
Requerimientos comunes de algoritmos
Servicios
Adaptadores de iteradores
Iteradores de flujos
Puntos de personalización de iteradores
Operaciones de iteradores
(C++11)
(C++11)
Acceso a rangos
(C++11)(C++14)
(C++11)(C++14)
(C++17)(C++20)
(C++14)(C++14)
(C++14)(C++14)
(C++17)
(C++17)
 
Definido en el archivo de encabezado <iterator>
template< class T >
using iter_value_t = /* véase más abajo */;
(1) (desde C++20)
template< /*desreferenciable*/ T >
using iter_reference_t = decltype(*std::declval<T&>());
(2) (desde 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) (desde C++23)
template< class T >
using iter_difference_t = /* véase más abajo */;
(4) (desde C++20)
template< /*desreferenciable*/ T>

    requires /* véase más abajo */
using iter_rvalue_reference_t =

    decltype(ranges::iter_move(std::declval<T&>()));
(5) (desde 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) (desde C++20)
Plantillas auxiliares
template< class T >
concept /*desreferenciable*/ = /* véase más abajo */;
(7) (solo de exposición*)
template< std::indirectly_readable T >
using /*indirect-value-t*/ = /* véase más abajo */;
(8) (solo de exposición*)

Calcula los tipos asociados de un iterador.

1) Calcula el tipo valor de T.
2) Calcula el tipo referencia de T.
3) Calcula el tipo referencia constante de T.
4) Calcula el tipo diferencia de T.
5) Calcula el tipo referencia r-valor de T. La restricción de esta plantilla de alias se cumple si y solo si la expresión ranges::iter_move(std::declval<T&>()) es válida y tiene un tipo referenciable.
6) Calcula el tipo referencia común de T. Este es el tipo de referencia común entre su tipo referencia y una referencia l-valor a su tipo valor.
7) El concepto de solo exposición dereferenceable se satisface si y solo si la expresión *std::declval<T&>() es válida y tiene un tipo referenciable.
8) La plantilla de alias de solo exposición indirect-value-t denota lo siguiente:
  • std::invoke_result_t<Proj&, /*indirect-value-t*/<I>> si T es igual que std::projected<I, Proj> para algunos tipos I y Proj.
  • De lo contrario, std::iter_value_t<T>&.

[editar] Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
P2609R3 C++20 std::iter_common_reference_t se definía en términos de std::iter_value_t<T>&,
que manejaba incorrectamente los tipos std::projected que
se proyectan en tipos referencia r-valor.
Se define en términos de
/*indirect-value-t*/<T>
para manejar dichos casos.

[editar] Véase también

Especifica que un tipo puede leerse indirectamente aplicando el operador *.
(concepto) [editar]
especifica que un tipo semiregular se puede incrementar con operadores de pre-incremento y pos-incremento.
(concepto) [editar]
Calcula el tipo del valor de un tipo indirectly_readable.
(plantilla de clase) [editar]
Calcula el tipo diferencia de un tipo weakly_incrementable.
(plantilla de clase) [editar]
Proporciona una interfaz uniforme para las propiedades de un iterador.
(plantilla de clase) [editar]
Obtiene los tipos asociados de un rango.
(plantilla de alias) [editar]
Obtiene los tipos referencia de un rango.
(plantilla de alias) [editar]
Obtiene el tamaño, la diferencia y los tipos valor de un rango.
(plantilla de alias) [editar]