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
Min standard notice:
Header: <iterator>
Compute the associated types of an iterator.
# Declarations
template< class T >
using iter_value_t = /* see below */;
(since C++20)
template< /*dereferenceable*/ T >
using iter_reference_t = decltype(*std::declval<T&>());
(since 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>>;
(since C++23)
template< class T >
using iter_difference_t = /* see below */;
(since C++20)
template< /*dereferenceable*/ T>
requires /* see below */
using iter_rvalue_reference_t =
decltype(ranges::iter_move(std::declval<T&>()));
(since 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>>;
(since C++20)
Helper templates
template< class T >
concept /*dereferenceable*/ = /* see below */;
(exposition only*)
template< std::indirectly_readable T >
using /*indirect-value-t*/ = /* see below */;
(exposition only*)
# Defect reports
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| P2609R3 | C++20 | std::iter_common_reference_t was defined in termsof std::iter_value_t | defined in terms of/indirect-value-t/ |
# See also
- indirectly_readable
- weakly_incrementable
- semiregular
- indirectly_readable_traits
- indirectly_readable
- incrementable_traits
- weakly_incrementable
- iterator_traits
- ranges::iterator_tranges::const_iterator_tranges::sentinel_tranges::const_sentinel_t
- ranges::range_reference_tranges::range_const_reference_tranges::range_rvalue_reference_tranges::range_common_reference_t
- ranges::range_difference_tranges::range_size_tranges::range_value_t