std::experimental::ranges::value_type
来自 cppreference.com
< cpp | experimental | ranges
定义在头文件 <experimental/ranges/iterator> 中 |
||
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) 常量限定类型专门化。
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; |
(范围 TS) | |
[编辑] 说明
如果一个类型同时包含一个 value_type
成员和一个 element_type
成员,则专门化 (5) 和 (6) 是模棱两可的。
value_type
旨在与 Readable
类型(如迭代器)一起使用。它不打算与范围一起使用。
[编辑] 示例
本节不完整 原因:没有示例 |
[编辑] 另请参阅
指定一个类型通过应用运算符 * 是可读的(concept) | |
收集迭代器关联类型的兼容性特性类 (alias template) |