[libcxx-commits] [PATCH] D148466: [libc++][NFC] Remove some dead code in common_type
Nikolas Klauser via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Sun Apr 16 07:17:02 PDT 2023
philnik created this revision.
Herald added a project: All.
philnik requested review of this revision.
Herald added a project: libc++.
Herald added a subscriber: libcxx-commits.
Herald added a reviewer: libc++.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D148466
Files:
libcxx/include/__type_traits/common_type.h
Index: libcxx/include/__type_traits/common_type.h
===================================================================
--- libcxx/include/__type_traits/common_type.h
+++ libcxx/include/__type_traits/common_type.h
@@ -57,25 +57,10 @@
template <class, class = void>
struct __common_type_impl {};
-// Clang provides variadic templates in C++03 as an extension.
-#if !defined(_LIBCPP_CXX03_LANG) || defined(__clang__)
-# define _LIBCPP_OPTIONAL_PACK(...) , __VA_ARGS__
template <class... _Tp>
struct __common_types;
template <class... _Tp>
struct _LIBCPP_TEMPLATE_VIS common_type;
-#else
-# define _LIBCPP_OPTIONAL_PACK(...)
-struct __no_arg;
-template <class _Tp, class _Up, class = __no_arg>
-struct __common_types;
-template <class _Tp = __no_arg, class _Up = __no_arg, class _Vp = __no_arg,
- class _Unused = __no_arg>
-struct common_type {
- static_assert(sizeof(_Unused) == 0,
- "common_type accepts at most 3 arguments in C++03");
-};
-#endif // _LIBCPP_CXX03_LANG
template <class _Tp, class _Up>
struct __common_type_impl<
@@ -84,12 +69,12 @@
typedef typename common_type<_Tp, _Up>::type type;
};
-template <class _Tp, class _Up, class _Vp _LIBCPP_OPTIONAL_PACK(class... _Rest)>
+template <class _Tp, class _Up, class _Vp, class... _Rest>
struct __common_type_impl<
- __common_types<_Tp, _Up, _Vp _LIBCPP_OPTIONAL_PACK(_Rest...)>,
+ __common_types<_Tp, _Up, _Vp, _Rest...>,
__void_t<typename common_type<_Tp, _Up>::type> >
: __common_type_impl<__common_types<typename common_type<_Tp, _Up>::type,
- _Vp _LIBCPP_OPTIONAL_PACK(_Rest...)> > {
+ _Vp, _Rest...> > {
};
// bullet 1 - sizeof...(Tp) == 0
@@ -117,13 +102,11 @@
// bullet 4 - sizeof...(Tp) > 2
-template <class _Tp, class _Up, class _Vp _LIBCPP_OPTIONAL_PACK(class... _Rest)>
+template <class _Tp, class _Up, class _Vp, class... _Rest>
struct _LIBCPP_TEMPLATE_VIS
- common_type<_Tp, _Up, _Vp _LIBCPP_OPTIONAL_PACK(_Rest...)>
+ common_type<_Tp, _Up, _Vp, _Rest...>
: __common_type_impl<
- __common_types<_Tp, _Up, _Vp _LIBCPP_OPTIONAL_PACK(_Rest...)> > {};
-
-#undef _LIBCPP_OPTIONAL_PACK
+ __common_types<_Tp, _Up, _Vp, _Rest...> > {};
#if _LIBCPP_STD_VER >= 14
template <class ..._Tp> using common_type_t = typename common_type<_Tp...>::type;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D148466.514006.patch
Type: text/x-patch
Size: 2385 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20230416/45173348/attachment.bin>
More information about the libcxx-commits
mailing list