mirror of
https://github.com/darlinghq/darling-libcxx.git
synced 2024-11-23 11:59:52 +00:00
[libcxx] Remove use of default function template parameters in type traits. Fixes DR20484
Summary: 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. Test Plan: No tests have been added. Reviewers: danalbert, mclow.lists Reviewed By: danalbert Subscribers: K-ballo, cfe-commits Differential Revision: http://reviews.llvm.org/D4735 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/branches/release_35@214427 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c05e3ccd37
commit
a4cf828021
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user