summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHoward Hinnant <hhinnant@apple.com>2012-11-01 16:32:14 +0000
committerHoward Hinnant <hhinnant@apple.com>2012-11-01 16:32:14 +0000
commitb3048116861acd5925562223c3c68f36cc47b7d0 (patch)
tree9a5e7b674a18396bbf79da7e0598582b86b72ade
parent973aa207e8744a278c3ad72dda91a197be9c6493 (diff)
downloadbcm5719-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_traits4
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>
OpenPOWER on IntegriCloud