std::indirectly_readable_traits_C++中文网
| 定义于头文件 |
||
| template< class I > |
(1) | (C++20 起) |
| template< class T > |
(2) | (C++20 起) |
| template< class I > requires std::is_array_v<I> |
(3) | (C++20 起) |
| template< class T > |
(4) | (C++20 起) |
| template <class T> requires requires { typename T::value_type; } |
(5) | (C++20 起) |
| template <class T> requires requires { typename T::element_type; } |
(6) | (C++20 起) |
计算类型 I 的关联值类型,若它存在。用户可对程序定义类型特化 indirectly_readable_traits 。
1) 初等模板是空 struct 。
2) 对指针的特化。若 T 是推想类型,则提供等于 std::remove_cv_t<T> 的成员类型 value_type 。否则无成员 value_type 。
4) 对 const 限定类型的特化。
5) 对定义公开可访问成员类型 value_type 的类型的特化。若 T::value_type 是对象类型,则提供等于 std::remove_cv_t<typename T::value_type> 的成员类型 value_type 。否则无成员 value_type 。
6) 对定义公开可访问成员类型 element_type 的类型(例如 std::shared_ptr )。若 T::element_type 是对象类型,则提供等于 std::remove_cv_t<typename T::element_type> 的 value_type 。否则无成员 value_type 。
注解
若类型含 value_type 成员以及 element_type 成员,则特化 (5) 与 (6) 有歧义。
有意将 value_type 对如迭代器的 indirectly_readable 类型使用。并非有意将它对范围使用。