std::iter_value_t, std::iter_reference_t, std::iter_difference_t, std::iter_rvalue_reference_t, std::iter_common_reference_t
来自cppreference.com
定义于头文件 <iterator>
|
||
template< class T > concept /*dereferenceable*/ = /* see below */; // 仅为说明 |
||
template< class T > using iter_value_t = /* see below */; |
(1) | (C++20 起) |
template< /*dereferenceable*/ T > using iter_reference_t = decltype(*std::declval<T&>()); |
(2) | (C++20 起) |
template< class T > using iter_difference_t = /* see below */; |
(3) | (C++20 起) |
template< /*dereferenceable*/ T> requires /* see below */ |
(4) | (C++20 起) |
template< std::readable T > using iter_common_reference_t = std::common_reference_t<std::iter_reference_t<T>, |
(5) | (C++20 起) |
计算迭代器的关联类型。仅为说明的概念 dereferenceable
若且唯若表达式 *std::declval<T&>()
合法且拥有可引用类型(特别是非 void )才得到满足。
1) 计算
T
的值类型。若不特化 std::iterator_traits<T> ,则 std::iter_value_t<T> 为 std::readable_traits<T>::value_type 。否则它是 std::iterator_traits<T>::value_type 。2) 计算
T
的引用类型。3) 计算
T
的差类型。若不特化 std::iterator_traits<T> ,则 std::iter_difference_t<T> 为 std::incrementable_traits<T>::difference_type 。否则它是 std::iterator_traits<T>::difference_type 。4) 计算
T
的右值引用类型。此别名模版上的制约的 "see below" 部分若且唯若表达式 ranges::iter_move(std::declval<T&>()) 合法且拥有可引用类型(特别是非 void )才得到满足。5) 计算
T
的共用引用类型。此乃其引用类型与到其值类型的左值引用类型的共用引用类型。参阅
指定类型通过应用运算符 * 可读 (概念) | |
指定 semiregular 类型能以前后自增运算符自增 (概念) | |
计算 readable 类型的值类型 (类模板) | |
计算 weakly_incrementable 类型的差类型 (类模板) | |
为迭代器各项性质提供统一接口 (类模板) |