std::iter_value_t, std::iter_reference_t, std::iter_difference_t, std::iter_rvalue_reference_t, std::iter_common_reference_t_C++中文网
位置:首页 > C++ 参考手册 >迭代器库 > std::iter_value_t, std::iter_reference_t, std::iter_difference_t, std::iter_rvalue_reference_t, std::iter_common_reference_t
| 定义于头文件 |
||
| template< class T > |
||
| template< class T > |
(1) | (C++20 起) |
| template< /*dereferenceable*/ T > |
(2) | (C++20 起) |
| template< class T > |
(3) | (C++20 起) |
| template< /*dereferenceable*/ T> requires /* see below */ |
(4) | (C++20 起) |
| template< std::indirectly_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<std::remove_cvref_t<T>> 未被特化,则 std::iter_value_t<T> 为 std::indirectly_readable_traits<std::remove_cvref_t<T>>::value_type 。否则它是 std::iterator_traits<std::remove_cvref_t<T>>::value_type 。
2) 计算 T 的引用类型。
3) 计算 T 的差类型。若 std::iterator_traits<std::remove_cvref_t<T>> 未被特化,则 std::iter_difference_t<T> 为 std::incrementable_traits<std::remove_cvref_t<T>>::difference_type 。否则它是 std::iterator_traits<std::remove_cvref_t<T>>::difference_type 。
4) 计算 T 的右值引用类型。此别名模版上的制约的 "see below" 部分若且唯若表达式 ranges::iter_move(std::declval<T&>()) 合法且拥有可引用类型(特别是非 void )才得到满足。
5) 计算 T 的共用引用类型。此乃其引用类型与到其值类型的左值引用类型的共用引用类型。