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
类型,例如迭代器。它不打算用于范围。
[编辑] 示例
本节不完整 原因:无示例 |
[编辑] 参阅
指定类型通过应用运算符 * 可读(概念) | |
收集迭代器相关类型的兼容性特征类 (别名模板) |