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
| Definido en el archivo de encabezado |
||
|
|
(1) | (desde C++20) |
|
|
(2) | (desde C++20) |
|
|
(3) | (desde C++23) |
|
|
(4) | (desde C++20) |
|
|
(5) | (desde C++20) |
|
|
(6) | (desde C++20) |
| Plantillas auxiliares |
||
|
(7) | (solo de exposición*) |
|
(8) | (solo de exposición*) |
Calcula los tipos asociados de un iterador.
1) Calcula el tipo valor de T.
- Si
std::iterator_traits<std::remove_cvref_t<T>>no está especializado, entoncesstd::iter_value_t<T>esstd::indirectly_readable_traits<std::remove_cvref_t<T>>::value_type. - De lo contrario, es
std::iterator_traits<std::remove_cvref_t<T>>::value_type.
2) Calcula el tipo referencia de T.
3) Calcula el tipo referencia constante de T.
4) Calcula el tipo diferencia de T.
- Si
std::iterator_traits<std::remove_cvref_t<T>>no está especializado, entoncesstd::iter_difference_t<T>esstd::incrementable_traits<std::remove_cvref_t<T>>::difference_type. - De lo contrario, es
std::iterator_traits<std::remove_cvref_t<T>>::difference_type.
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>>siTes igual questd::projected<I, Proj>para algunos tiposIyProj.- De lo contrario,
std::iter_value_t<T>&.
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. |
Véase también
(C++20) |
Especifica que un tipo puede leerse indirectamente aplicando el operador *. (concepto) [editar] |
(C++20) |
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] | |
(C++20)(C++20)(C++20) |
Obtiene el tamaño, la diferencia y los tipos valor de un rango. (plantilla de alias) [editar] |