Hi mclow.lists, danalbert,

This patch moves the SFINAE for __is_destructor_welformed out of the function 
template parameters. type_traits must compile in c++03 mode since it is 
included in c++03 headers.

http://reviews.llvm.org/D4735

Files:
  include/type_traits

Index: include/type_traits
===================================================================
--- include/type_traits
+++ include/type_traits
@@ -1544,16 +1544,21 @@
 //     Otherwise, return "std::declval<_Up&>().~_Up()" is well-formed
 //    where _Up is remove_all_extents<_Tp>::type
 
+template <class>
+struct __is_destructible_apply { typedef int type; };
+
 template <typename _Tp>
 struct __is_destructor_wellformed {
-       template <typename _Tp1, typename _Tp2 = 
decltype(_VSTD::declval<_Tp1&>().~_Tp1())>
-       static char  __test (int);
+       template <typename _Tp1>
+       static char  __test (
+        typename 
__is_destructible_apply<decltype(_VSTD::declval<_Tp1&>().~_Tp1())>::type
+    );
 
        template <typename _Tp1>
        static __two __test (...);
        
        static const bool value = sizeof(__test<_Tp>(12)) == sizeof(char);
-       };
+};
 
 template <class _Tp, bool>
 struct __destructible_imp;
Index: include/type_traits
===================================================================
--- include/type_traits
+++ include/type_traits
@@ -1544,16 +1544,21 @@
 //	Otherwise, return "std::declval<_Up&>().~_Up()" is well-formed
 //    where _Up is remove_all_extents<_Tp>::type
 
+template <class>
+struct __is_destructible_apply { typedef int type; };
+
 template <typename _Tp>
 struct __is_destructor_wellformed {
-	template <typename _Tp1, typename _Tp2 = decltype(_VSTD::declval<_Tp1&>().~_Tp1())>
-	static char  __test (int);
+	template <typename _Tp1>
+	static char  __test (
+        typename __is_destructible_apply<decltype(_VSTD::declval<_Tp1&>().~_Tp1())>::type
+    );
 
 	template <typename _Tp1>
 	static __two __test (...);
 	
 	static const bool value = sizeof(__test<_Tp>(12)) == sizeof(char);
-	};
+};
 
 template <class _Tp, bool>
 struct __destructible_imp;
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to