diff options
author | Howard Hinnant <hhinnant@apple.com> | 2012-11-01 16:32:14 +0000 |
---|---|---|
committer | Howard Hinnant <hhinnant@apple.com> | 2012-11-01 16:32:14 +0000 |
commit | b3048116861acd5925562223c3c68f36cc47b7d0 (patch) | |
tree | 9a5e7b674a18396bbf79da7e0598582b86b72ade | |
parent | 973aa207e8744a278c3ad72dda91a197be9c6493 (diff) | |
download | bcm5719-llvm-b3048116861acd5925562223c3c68f36cc47b7d0.tar.gz bcm5719-llvm-b3048116861acd5925562223c3c68f36cc47b7d0.zip |
Richard Smith: This fixes a problem in std::is_constructible for incomplete types, and those types with a user-defined operator,().
llvm-svn: 167233
-rw-r--r-- | libcxx/include/type_traits | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libcxx/include/type_traits b/libcxx/include/type_traits index 59b07b3261c..26c37dfa0c7 100644 --- a/libcxx/include/type_traits +++ b/libcxx/include/type_traits @@ -1771,8 +1771,10 @@ class _LIBCPP_VISIBLE result_of<_Fn(_A0, _A1, _A2)> // main is_constructible test +template<typename, typename T> struct __select_2nd { typedef T type; }; + template <class _Tp, class ..._Args> -decltype(_VSTD::move(_Tp(_VSTD::declval<_Args>()...)), true_type()) +typename __select_2nd<decltype(_VSTD::move(_Tp(_VSTD::declval<_Args>()...))), true_type>::type __is_constructible_test(_Tp&&, _Args&& ...); template <class ..._Args> |