summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcxx/include/type_traits11
1 files changed, 8 insertions, 3 deletions
diff --git a/libcxx/include/type_traits b/libcxx/include/type_traits
index e9f6c014e2a..371a15e0b3e 100644
--- a/libcxx/include/type_traits
+++ b/libcxx/include/type_traits
@@ -1544,16 +1544,21 @@ template <class _Tp> struct _LIBCPP_TYPE_VIS_ONLY is_move_assignable
// 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;
OpenPOWER on IntegriCloud