Richard Smith: This fixes a problem in std::is_constructible for incomplete types, and those types with a user-defined operator,().

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@167233 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Howard Hinnant 2012-11-01 16:32:14 +00:00
parent 9c0df1416f
commit 4af2cf38f0

View File

@ -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>