[PATCH] Remove use of default function template parameters in type traits. Fixes DR20484
Eric Fiselier
eric at efcs.ca
Wed Jul 30 18:26:48 PDT 2014
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;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D4735.12052.patch
Type: text/x-patch
Size: 885 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140731/8d594d5c/attachment.bin>
More information about the cfe-commits
mailing list