[libcxx-commits] [libcxx] 67e6f5a - [libc++][NFC] Remove some dead code in common_type

Nikolas Klauser via libcxx-commits libcxx-commits at lists.llvm.org
Mon Apr 17 10:27:16 PDT 2023


Author: Nikolas Klauser
Date: 2023-04-17T19:27:09+02:00
New Revision: 67e6f5a7968f21f5db47dfa1d6b6f40715d8fe6e

URL: https://github.com/llvm/llvm-project/commit/67e6f5a7968f21f5db47dfa1d6b6f40715d8fe6e
DIFF: https://github.com/llvm/llvm-project/commit/67e6f5a7968f21f5db47dfa1d6b6f40715d8fe6e.diff

LOG: [libc++][NFC] Remove some dead code in common_type

Reviewed By: #libc, Mordante

Spies: Mordante, libcxx-commits

Differential Revision: https://reviews.llvm.org/D148466

Added: 
    

Modified: 
    libcxx/include/__type_traits/common_type.h

Removed: 
    


################################################################################
diff  --git a/libcxx/include/__type_traits/common_type.h b/libcxx/include/__type_traits/common_type.h
index afd766f05dec3..d6f73f64588c1 100644
--- a/libcxx/include/__type_traits/common_type.h
+++ b/libcxx/include/__type_traits/common_type.h
@@ -57,25 +57,10 @@ struct __common_type2_imp<_Tp, _Up, __void_t<decltype(true ? std::declval<_Tp>()
 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 @@ struct __common_type_impl<
   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 @@ struct _LIBCPP_TEMPLATE_VIS common_type<_Tp, _Up>
 
 // 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;


        


More information about the libcxx-commits mailing list