Remove even more dead code.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@364050 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/__config b/include/__config
index 3476115..5eb69b4 100644
--- a/include/__config
+++ b/include/__config
@@ -535,12 +535,10 @@
 
 #define _LIBCPP_HAS_NO_CXX14_CONSTEXPR
 #define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES
-#define _LIBCPP_HAS_NO_NOEXCEPT
 #define __alignof__ __alignof
 #define _LIBCPP_NORETURN __declspec(noreturn)
 #define _ALIGNAS(x) __declspec(align(x))
 #define _ALIGNAS_TYPE(x) alignas(x)
-#define _LIBCPP_HAS_NO_VARIADICS
 
 #define _LIBCPP_WEAK
 
diff --git a/include/type_traits b/include/type_traits
index 2cf54e2..f0c7fde 100644
--- a/include/type_traits
+++ b/include/type_traits
@@ -1514,14 +1514,6 @@
 struct __is_convertible
     : public integral_constant<bool,
         __is_convertible_imp::__is_convertible_test<_T1, _T2>::value
-#if defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
-         && !(!is_function<_T1>::value && !is_reference<_T1>::value && is_reference<_T2>::value
-              && (!is_const<typename remove_reference<_T2>::type>::value
-                  || is_volatile<typename remove_reference<_T2>::type>::value)
-                  && (is_same<typename remove_cv<_T1>::type,
-                              typename remove_cv<typename remove_reference<_T2>::type>::type>::value
-                      || is_base_of<typename remove_reference<_T2>::type, _T1>::value))
-#endif
     >
 {};
 
@@ -3165,239 +3157,11 @@
 struct _LIBCPP_TEMPLATE_VIS is_constructible
     : public integral_constant<bool, __is_constructible(_Tp, _Args...)>
     {};
-#elif !defined(_LIBCPP_CXX03_LANG)
+#else
 template <class _Tp, class... _Args>
 struct _LIBCPP_TEMPLATE_VIS is_constructible
     : public __libcpp_is_constructible<_Tp, _Args...>::type {};
-#else
-// template <class T> struct is_constructible0;
-
-//      main is_constructible0 test
-
-template <class _Tp>
-decltype((_Tp(), true_type()))
-__is_constructible0_test(_Tp&);
-
-false_type
-__is_constructible0_test(__any);
-
-template <class _Tp, class _A0>
-decltype((_Tp(_VSTD::declval<_A0>()), true_type()))
-__is_constructible1_test(_Tp&, _A0&);
-
-template <class _A0>
-false_type
-__is_constructible1_test(__any, _A0&);
-
-template <class _Tp, class _A0, class _A1>
-decltype((_Tp(_VSTD::declval<_A0>(), _VSTD::declval<_A1>()), true_type()))
-__is_constructible2_test(_Tp&, _A0&, _A1&);
-
-template <class _A0, class _A1>
-false_type
-__is_constructible2_test(__any, _A0&, _A1&);
-
-template <class _Tp, class _A0, class _A1, class _A2>
-decltype((_Tp(_VSTD::declval<_A0>(), _VSTD::declval<_A1>(), _VSTD::declval<_A2>()), true_type()))
-__is_constructible3_test(_Tp&, _A0&, _A1&, _A2&);
-
-template <class _A0, class _A1, class _A2>
-false_type
-__is_constructible3_test(__any, _A0&, _A1&, _A2&);
-
-template <bool, class _Tp>
-struct __is_constructible0_imp // false, _Tp is not a scalar
-    : public common_type
-             <
-                 decltype(__is_constructible0_test(declval<_Tp&>()))
-             >::type
-    {};
-
-template <bool, class _Tp, class _A0>
-struct __is_constructible1_imp // false, _Tp is not a scalar
-    : public common_type
-             <
-                 decltype(__is_constructible1_test(declval<_Tp&>(), declval<_A0&>()))
-             >::type
-    {};
-
-template <bool, class _Tp, class _A0, class _A1>
-struct __is_constructible2_imp // false, _Tp is not a scalar
-    : public common_type
-             <
-                 decltype(__is_constructible2_test(declval<_Tp&>(), declval<_A0>(), declval<_A1>()))
-             >::type
-    {};
-
-template <bool, class _Tp, class _A0, class _A1, class _A2>
-struct __is_constructible3_imp // false, _Tp is not a scalar
-    : public common_type
-             <
-                 decltype(__is_constructible3_test(declval<_Tp&>(), declval<_A0>(), declval<_A1>(), declval<_A2>()))
-             >::type
-    {};
-
-//      handle scalars and reference types
-
-//      Scalars are default constructible, references are not
-
-template <class _Tp>
-struct __is_constructible0_imp<true, _Tp>
-    : public is_scalar<_Tp>
-    {};
-
-template <class _Tp, class _A0>
-struct __is_constructible1_imp<true, _Tp, _A0>
-    : public is_convertible<_A0, _Tp>
-    {};
-
-template <class _Tp, class _A0, class _A1>
-struct __is_constructible2_imp<true, _Tp, _A0, _A1>
-    : public false_type
-    {};
-
-template <class _Tp, class _A0, class _A1, class _A2>
-struct __is_constructible3_imp<true, _Tp, _A0, _A1, _A2>
-    : public false_type
-    {};
-
-//      Treat scalars and reference types separately
-
-template <bool, class _Tp>
-struct __is_constructible0_void_check
-    : public __is_constructible0_imp<is_scalar<_Tp>::value || is_reference<_Tp>::value,
-                                _Tp>
-    {};
-
-template <bool, class _Tp, class _A0>
-struct __is_constructible1_void_check
-    : public __is_constructible1_imp<is_scalar<_Tp>::value || is_reference<_Tp>::value,
-                                _Tp, _A0>
-    {};
-
-template <bool, class _Tp, class _A0, class _A1>
-struct __is_constructible2_void_check
-    : public __is_constructible2_imp<is_scalar<_Tp>::value || is_reference<_Tp>::value,
-                                _Tp, _A0, _A1>
-    {};
-
-template <bool, class _Tp, class _A0, class _A1, class _A2>
-struct __is_constructible3_void_check
-    : public __is_constructible3_imp<is_scalar<_Tp>::value || is_reference<_Tp>::value,
-                                _Tp, _A0, _A1, _A2>
-    {};
-
-//      If any of T or Args is void, is_constructible should be false
-
-template <class _Tp>
-struct __is_constructible0_void_check<true, _Tp>
-    : public false_type
-    {};
-
-template <class _Tp, class _A0>
-struct __is_constructible1_void_check<true, _Tp, _A0>
-    : public false_type
-    {};
-
-template <class _Tp, class _A0, class _A1>
-struct __is_constructible2_void_check<true, _Tp, _A0, _A1>
-    : public false_type
-    {};
-
-template <class _Tp, class _A0, class _A1, class _A2>
-struct __is_constructible3_void_check<true, _Tp, _A0, _A1, _A2>
-    : public false_type
-    {};
-
-//      is_constructible entry point
-
-template <class _Tp, class _A0 = __is_construct::__nat,
-                     class _A1 = __is_construct::__nat,
-                     class _A2 = __is_construct::__nat>
-struct _LIBCPP_TEMPLATE_VIS is_constructible
-    : public __is_constructible3_void_check<is_void<_Tp>::value
-                                        || is_abstract<_Tp>::value
-                                        || is_function<_Tp>::value
-                                        || is_void<_A0>::value
-                                        || is_void<_A1>::value
-                                        || is_void<_A2>::value,
-                                           _Tp, _A0, _A1, _A2>
-    {};
-
-template <class _Tp>
-struct _LIBCPP_TEMPLATE_VIS is_constructible<_Tp, __is_construct::__nat, __is_construct::__nat>
-    : public __is_constructible0_void_check<is_void<_Tp>::value
-                                        || is_abstract<_Tp>::value
-                                        || is_function<_Tp>::value,
-                                           _Tp>
-    {};
-
-template <class _Tp, class _A0>
-struct _LIBCPP_TEMPLATE_VIS is_constructible<_Tp, _A0, __is_construct::__nat>
-    : public __is_constructible1_void_check<is_void<_Tp>::value
-                                        || is_abstract<_Tp>::value
-                                        || is_function<_Tp>::value
-                                        || is_void<_A0>::value,
-                                           _Tp, _A0>
-    {};
-
-template <class _Tp, class _A0, class _A1>
-struct _LIBCPP_TEMPLATE_VIS is_constructible<_Tp, _A0, _A1, __is_construct::__nat>
-    : public __is_constructible2_void_check<is_void<_Tp>::value
-                                        || is_abstract<_Tp>::value
-                                        || is_function<_Tp>::value
-                                        || is_void<_A0>::value
-                                        || is_void<_A1>::value,
-                                           _Tp, _A0, _A1>
-    {};
-
-//      Array types are default constructible if their element type
-//      is default constructible
-
-template <class _Ap, size_t _Np>
-struct __is_constructible0_imp<false, _Ap[_Np]>
-    : public is_constructible<typename remove_all_extents<_Ap>::type>
-    {};
-
-template <class _Ap, size_t _Np, class _A0>
-struct __is_constructible1_imp<false, _Ap[_Np], _A0>
-    : public false_type
-    {};
-
-template <class _Ap, size_t _Np, class _A0, class _A1>
-struct __is_constructible2_imp<false, _Ap[_Np], _A0, _A1>
-    : public false_type
-    {};
-
-template <class _Ap, size_t _Np, class _A0, class _A1, class _A2>
-struct __is_constructible3_imp<false, _Ap[_Np], _A0, _A1, _A2>
-    : public false_type
-    {};
-
-//      Incomplete array types are not constructible
-
-template <class _Ap>
-struct __is_constructible0_imp<false, _Ap[]>
-    : public false_type
-    {};
-
-template <class _Ap, class _A0>
-struct __is_constructible1_imp<false, _Ap[], _A0>
-    : public false_type
-    {};
-
-template <class _Ap, class _A0, class _A1>
-struct __is_constructible2_imp<false, _Ap[], _A0, _A1>
-    : public false_type
-    {};
-
-template <class _Ap, class _A0, class _A1, class _A2>
-struct __is_constructible3_imp<false, _Ap[], _A0, _A1, _A2>
-    : public false_type
-    {};
-
-#endif // __has_feature(is_constructible)
-
+#endif
 
 #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) && !defined(_LIBCPP_HAS_NO_VARIADICS)
 template <class _Tp, class ..._Args>