diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-12-25 17:35:41 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2024-04-06 20:13:06 +0000 |
commit | cb14a3fe5122c879eae1fb480ed7ce82a699ddb6 (patch) | |
tree | b983a613c35ece61d561b5a9ef9cd66419f6c7fb /contrib/llvm-project/libcxx/include/__iterator/readable_traits.h | |
parent | 3d68ee6cbdb244de9fab1df8a2525d2fa592571e (diff) | |
parent | 99aabd70801bd4bc72c4942747f6d62c675112f5 (diff) | |
download | src-cb14a3fe5122c879eae1fb480ed7ce82a699ddb6.tar.gz src-cb14a3fe5122c879eae1fb480ed7ce82a699ddb6.zip |
Diffstat (limited to 'contrib/llvm-project/libcxx/include/__iterator/readable_traits.h')
-rw-r--r-- | contrib/llvm-project/libcxx/include/__iterator/readable_traits.h | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/contrib/llvm-project/libcxx/include/__iterator/readable_traits.h b/contrib/llvm-project/libcxx/include/__iterator/readable_traits.h index 9e101fc28a6f..25e74567fff1 100644 --- a/contrib/llvm-project/libcxx/include/__iterator/readable_traits.h +++ b/contrib/llvm-project/libcxx/include/__iterator/readable_traits.h @@ -29,50 +29,50 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER >= 20 // [readable.traits] -template<class> struct __cond_value_type {}; +template <class> +struct __cond_value_type {}; -template<class _Tp> -requires is_object_v<_Tp> -struct __cond_value_type<_Tp> { using value_type = remove_cv_t<_Tp>; }; +template <class _Tp> + requires is_object_v<_Tp> +struct __cond_value_type<_Tp> { + using value_type = remove_cv_t<_Tp>; +}; -template<class _Tp> +template <class _Tp> concept __has_member_value_type = requires { typename _Tp::value_type; }; -template<class _Tp> +template <class _Tp> concept __has_member_element_type = requires { typename _Tp::element_type; }; -template<class> struct indirectly_readable_traits {}; +template <class> +struct indirectly_readable_traits {}; -template<class _Ip> -requires is_array_v<_Ip> +template <class _Ip> + requires is_array_v<_Ip> struct indirectly_readable_traits<_Ip> { using value_type = remove_cv_t<remove_extent_t<_Ip>>; }; -template<class _Ip> +template <class _Ip> struct indirectly_readable_traits<const _Ip> : indirectly_readable_traits<_Ip> {}; -template<class _Tp> +template <class _Tp> struct indirectly_readable_traits<_Tp*> : __cond_value_type<_Tp> {}; -template<__has_member_value_type _Tp> -struct indirectly_readable_traits<_Tp> - : __cond_value_type<typename _Tp::value_type> {}; +template <__has_member_value_type _Tp> +struct indirectly_readable_traits<_Tp> : __cond_value_type<typename _Tp::value_type> {}; -template<__has_member_element_type _Tp> -struct indirectly_readable_traits<_Tp> - : __cond_value_type<typename _Tp::element_type> {}; +template <__has_member_element_type _Tp> +struct indirectly_readable_traits<_Tp> : __cond_value_type<typename _Tp::element_type> {}; -template<__has_member_value_type _Tp> +template <__has_member_value_type _Tp> requires __has_member_element_type<_Tp> struct indirectly_readable_traits<_Tp> {}; -template<__has_member_value_type _Tp> +template <__has_member_value_type _Tp> requires __has_member_element_type<_Tp> && - same_as<remove_cv_t<typename _Tp::element_type>, - remove_cv_t<typename _Tp::value_type>> -struct indirectly_readable_traits<_Tp> - : __cond_value_type<typename _Tp::value_type> {}; + same_as<remove_cv_t<typename _Tp::element_type>, remove_cv_t<typename _Tp::value_type>> +struct indirectly_readable_traits<_Tp> : __cond_value_type<typename _Tp::value_type> {}; #endif // _LIBCPP_STD_VER >= 20 |