[libcxx] r344261 - Revert commit r344254; does not work with C++03

Marshall Clow mclow.lists at gmail.com
Thu Oct 11 10:28:57 PDT 2018


Author: marshall
Date: Thu Oct 11 10:28:57 2018
New Revision: 344261

URL: http://llvm.org/viewvc/llvm-project?rev=344261&view=rev
Log:
Revert commit r344254; does not work with C++03

Modified:
    libcxx/trunk/include/type_traits

Modified: libcxx/trunk/include/type_traits
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/type_traits?rev=344261&r1=344260&r2=344261&view=diff
==============================================================================
--- libcxx/trunk/include/type_traits (original)
+++ libcxx/trunk/include/type_traits Thu Oct 11 10:28:57 2018
@@ -3686,12 +3686,7 @@ _LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR boo
 
 // is_trivially_destructible
 
-#if __has_keyword(__is_trivially_destructible)
-
-template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_destructible
-    : public integral_constant<bool, __is_trivially_destructible(_Tp)> {};
-
-#elif __has_feature(has_trivial_destructor) || (_GNUC_VER >= 403)
+#if __has_feature(has_trivial_destructor) || (_GNUC_VER >= 403)
 
 template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_destructible
     : public integral_constant<bool, is_destructible<_Tp>::value && __has_trivial_destructor(_Tp)> {};
@@ -3718,15 +3713,18 @@ _LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR boo
 
 // is_nothrow_constructible
 
-#ifndef _LIBCPP_HAS_NO_VARIADICS
-
-#if __has_keyword(__is_nothrow_constructible)
-
+#if 0
 template <class _Tp, class... _Args>
 struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible
-    : public integral_constant<bool, __is_nothrow_constructible(_Tp, _Args...)> {};
+    : public integral_constant<bool, __is_nothrow_constructible(_Tp(_Args...))>
+{
+};
+
+#else
 
-#elif __has_feature(cxx_noexcept) || (_GNUC_VER >= 407 && __cplusplus >= 201103L)
+#ifndef _LIBCPP_HAS_NO_VARIADICS
+
+#if __has_feature(cxx_noexcept) || (_GNUC_VER >= 407 && __cplusplus >= 201103L)
 
 template <bool, bool, class _Tp, class... _Args> struct __libcpp_is_nothrow_constructible;
 
@@ -3763,7 +3761,7 @@ struct _LIBCPP_TEMPLATE_VIS is_nothrow_c
 {
 };
 
-#else  // __has_keyword(__is_nothrow_constructible) || __has_feature(cxx_noexcept)
+#else  // __has_feature(cxx_noexcept)
 
 template <class _Tp, class... _Args>
 struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible
@@ -3819,23 +3817,6 @@ struct _LIBCPP_TEMPLATE_VIS is_nothrow_c
 
 #else  // _LIBCPP_HAS_NO_VARIADICS
 
-#if __has_keyword(__is_nothrow_constructible)
-
-template <class _Tp, class _A0 = __is_construct::__nat,
-                     class _A1 = __is_construct::__nat>
-struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible
-    : public integral_constant<bool, __is_nothrow_constructible(_Tp, _A0, _A1)> {};
-
-template <class _Tp, class _A0>
-struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp, _A0>
-    : public integral_constant<bool, __is_nothrow_constructible(_Tp, _A0)> {};
-
-template <class _Tp>
-struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp>
-    : public integral_constant<bool, __is_nothrow_constructible(_Tp)> {};
-
-#else  // __has_keyword(__is_nothrow_constructible)
-
 template <class _Tp, class _A0 = __is_construct::__nat,
                      class _A1 = __is_construct::__nat>
 struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible
@@ -3887,8 +3868,8 @@ struct _LIBCPP_TEMPLATE_VIS is_nothrow_c
 {
 };
 
-#endif  // __has_keyword(__is_nothrow_constructible)
 #endif  // _LIBCPP_HAS_NO_VARIADICS
+#endif  // __has_feature(is_nothrow_constructible)
 
 #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) && !defined(_LIBCPP_HAS_NO_VARIADICS)
 template <class _Tp, class ..._Args>
@@ -3938,13 +3919,7 @@ _LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR boo
 
 // is_nothrow_assignable
 
-#if __has_keyword(__is_nothrow_assignable)
-
-template <class _Tp, class _Arg>
-struct _LIBCPP_TEMPLATE_VIS is_nothrow_assignable
-    : public integral_constant<bool, __is_nothrow_assignable(_Tp, _Arg)> {};
-
-#elif __has_feature(cxx_noexcept) || (_GNUC_VER >= 407 && __cplusplus >= 201103L)
+#if __has_feature(cxx_noexcept) || (_GNUC_VER >= 407 && __cplusplus >= 201103L)
 
 template <bool, class _Tp, class _Arg> struct __libcpp_is_nothrow_assignable;
 
@@ -3966,7 +3941,7 @@ struct _LIBCPP_TEMPLATE_VIS is_nothrow_a
 {
 };
 
-#else  // __has_keyword(__is_nothrow_assignable) || __has_feature(cxx_noexcept)
+#else  // __has_feature(cxx_noexcept)
 
 template <class _Tp, class _Arg>
 struct _LIBCPP_TEMPLATE_VIS is_nothrow_assignable




More information about the libcxx-commits mailing list