std::experimental::ranges::value_type
来自 cppreference.cn
< cpp | experimental | ranges
| template< class I > struct value_type {}; |
(1) | |
| template< class T > struct value_type<T*>; |
(2) | |
| template< class I > requires std::is_array<I>::value |
(3) | |
| template< class T > struct value_type<const T> : value_type<std::decay_t<T>> {}; |
(4) | |
| template< class T > requires requires { typename T::value_type; } |
(5) | |
| template< class T > requires requires { typename T::element_type; } |
(6) | |
计算类型 I 的关联值类型(如果存在)。用户可以为程序定义的类型特化 value_type。
1) 主模板是一个空结构体。
3) 数组类型的特化。
4) const 限定类型的特化。
5) 为定义了公共可访问成员类型
value_type 的类型进行特化。如果 T::value_type 是一个对象类型,则提供一个成员类型 type,其等于 T::value_type。否则,没有成员 type。6) 为定义了公共可访问成员类型
element_type 的类型进行特化(例如,std::shared_ptr)。如果 T::element_type 是一个对象类型,则提供一个成员类型 type,其等于 std::remove_cv_t<typename T::element_type>。否则,没有成员 type。目录 |
[编辑] 辅助别名模板
| template< class T > using value_type_t = typename ranges::value_type<T>::type; |
(Ranges TS) | |
[编辑] 注意
如果一个类型同时包含 value_type 成员和 element_type 成员,那么特化 (5) 和 (6) 会产生歧义。
value_type 旨在用于 Readable 类型,例如迭代器。它不打算用于范围。
[编辑] 示例
| 本节不完整 原因:无示例 |
[编辑] 参阅
指定类型通过应用运算符 * 可读(概念) | |
| 收集迭代器相关类型的兼容性特征类 (别名模板) |