diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2024-04-26 15:33:29 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2024-05-08 19:37:29 -0700 |
| commit | 06ee65af9ed6aa5ee4d1d7f4fab9d7acecf66e76 (patch) | |
| tree | 1316711b92a43dd5c599e425b8693fa8e1e0c0b7 /lib/libcxx/include/__tuple/tuple_element.h | |
| parent | bc6ebc6f2597fda1f98842c6f545751fef2a5334 (diff) | |
| download | zig-06ee65af9ed6aa5ee4d1d7f4fab9d7acecf66e76.tar.gz zig-06ee65af9ed6aa5ee4d1d7f4fab9d7acecf66e76.zip | |
libcxx: update to LLVM 18
release/18.x branch, commit 78b99c73ee4b96fe9ce0e294d4632326afb2db42
This adds the flag `-D_LIBCPP_HARDENING_MODE` which is determined based
on the Zig optimization mode.
This commit also fixes libunwind, libcxx, and libcxxabi to properly
report sub compilation errors.
Diffstat (limited to 'lib/libcxx/include/__tuple/tuple_element.h')
| -rw-r--r-- | lib/libcxx/include/__tuple/tuple_element.h | 64 |
1 files changed, 29 insertions, 35 deletions
diff --git a/lib/libcxx/include/__tuple/tuple_element.h b/lib/libcxx/include/__tuple/tuple_element.h index 478dd089d4..2b9ac6696c 100644 --- a/lib/libcxx/include/__tuple/tuple_element.h +++ b/lib/libcxx/include/__tuple/tuple_element.h @@ -23,68 +23,62 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template <size_t _Ip, class _Tp> struct _LIBCPP_TEMPLATE_VIS tuple_element; +template <size_t _Ip, class _Tp> +struct _LIBCPP_TEMPLATE_VIS tuple_element; template <size_t _Ip, class _Tp> -struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, const _Tp> -{ - typedef _LIBCPP_NODEBUG typename add_const<typename tuple_element<_Ip, _Tp>::type>::type type; +struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, const _Tp> { + typedef _LIBCPP_NODEBUG typename add_const<typename tuple_element<_Ip, _Tp>::type>::type type; }; template <size_t _Ip, class _Tp> -struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, volatile _Tp> -{ - typedef _LIBCPP_NODEBUG typename add_volatile<typename tuple_element<_Ip, _Tp>::type>::type type; +struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, volatile _Tp> { + typedef _LIBCPP_NODEBUG typename add_volatile<typename tuple_element<_Ip, _Tp>::type>::type type; }; template <size_t _Ip, class _Tp> -struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, const volatile _Tp> -{ - typedef _LIBCPP_NODEBUG typename add_cv<typename tuple_element<_Ip, _Tp>::type>::type type; +struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, const volatile _Tp> { + typedef _LIBCPP_NODEBUG typename add_cv<typename tuple_element<_Ip, _Tp>::type>::type type; }; #ifndef _LIBCPP_CXX03_LANG -#if !__has_builtin(__type_pack_element) +# if !__has_builtin(__type_pack_element) namespace __indexer_detail { template <size_t _Idx, class _Tp> -struct __indexed { using type _LIBCPP_NODEBUG = _Tp; }; +struct __indexed { + using type _LIBCPP_NODEBUG = _Tp; +}; -template <class _Types, class _Indexes> struct __indexer; +template <class _Types, class _Indexes> +struct __indexer; -template <class ..._Types, size_t ..._Idx> -struct __indexer<__tuple_types<_Types...>, __tuple_indices<_Idx...>> - : __indexed<_Idx, _Types>... -{}; +template <class... _Types, size_t... _Idx> +struct __indexer<__tuple_types<_Types...>, __tuple_indices<_Idx...>> : __indexed<_Idx, _Types>... {}; template <size_t _Idx, class _Tp> __indexed<_Idx, _Tp> __at_index(__indexed<_Idx, _Tp> const&); } // namespace __indexer_detail -template <size_t _Idx, class ..._Types> -using __type_pack_element _LIBCPP_NODEBUG = typename decltype( - __indexer_detail::__at_index<_Idx>( - __indexer_detail::__indexer< - __tuple_types<_Types...>, - typename __make_tuple_indices<sizeof...(_Types)>::type - >{}) - )::type; -#endif +template <size_t _Idx, class... _Types> +using __type_pack_element _LIBCPP_NODEBUG = typename decltype(__indexer_detail::__at_index<_Idx>( + __indexer_detail::__indexer< __tuple_types<_Types...>, + typename __make_tuple_indices<sizeof...(_Types)>::type >{}))::type; +# endif -template <size_t _Ip, class ..._Types> -struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, __tuple_types<_Types...> > -{ - static_assert(_Ip < sizeof...(_Types), "tuple_element index out of range"); - typedef _LIBCPP_NODEBUG __type_pack_element<_Ip, _Types...> type; +template <size_t _Ip, class... _Types> +struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, __tuple_types<_Types...> > { + static_assert(_Ip < sizeof...(_Types), "tuple_element index out of range"); + typedef _LIBCPP_NODEBUG __type_pack_element<_Ip, _Types...> type; }; -#if _LIBCPP_STD_VER >= 14 -template <size_t _Ip, class ..._Tp> -using tuple_element_t _LIBCPP_NODEBUG = typename tuple_element <_Ip, _Tp...>::type; -#endif +# if _LIBCPP_STD_VER >= 14 +template <size_t _Ip, class... _Tp> +using tuple_element_t _LIBCPP_NODEBUG = typename tuple_element<_Ip, _Tp...>::type; +# endif #endif // _LIBCPP_CXX03_LANG |
