From b929de3c3d5c11d6136be1f59838788b8797ac12 Mon Sep 17 00:00:00 2001 From: Howard Hinnant Date: Fri, 1 Jul 2011 20:12:51 +0000 Subject: [PATCH] Changed constraints on pair and tuple constructors from is_convertible to is_constructible. llvm-svn: 134252 --- libcxx/include/__tuple | 4 ---- libcxx/include/utility | 12 ++++++------ 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/libcxx/include/__tuple b/libcxx/include/__tuple index a9514c1e36f2..918656ed8386 100644 --- a/libcxx/include/__tuple +++ b/libcxx/include/__tuple @@ -214,11 +214,7 @@ struct __tuple_convertible_imp : public false_type {}; template struct __tuple_convertible_imp, __tuple_types<_Up0, _Up...> > : public integral_constant::value && -#else is_constructible<_Up0, _Tp0>::value && -#endif __tuple_convertible_imp, __tuple_types<_Up...> >::value> {}; template <> diff --git a/libcxx/include/utility b/libcxx/include/utility index 3850f8f3524a..d0aee559a310 100644 --- a/libcxx/include/utility +++ b/libcxx/include/utility @@ -227,8 +227,8 @@ struct _LIBCPP_VISIBLE pair template _LIBCPP_INLINE_VISIBILITY pair(const pair<_U1, _U2>& __p, - typename enable_if::value && - is_convertible<_U2, _T2>::value>::type* = 0) + typename enable_if::value && + is_constructible<_T2, _U2>::value>::type* = 0) : first(__p.first), second(__p.second) {} _LIBCPP_INLINE_VISIBILITY @@ -253,8 +253,8 @@ struct _LIBCPP_VISIBLE pair #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template ::value && - is_convertible<_U2, second_type>::value>::type> + class = typename enable_if::value && + is_constructible::value>::type> _LIBCPP_INLINE_VISIBILITY pair(_U1&& __u1, _U2&& __u2) : first(_VSTD::forward<_U1>(__u1)), @@ -264,8 +264,8 @@ struct _LIBCPP_VISIBLE pair template _LIBCPP_INLINE_VISIBILITY pair(pair<_U1, _U2>&& __p, - typename enable_if::value && - is_convertible<_U2, _T2>::value>::type* = 0) + typename enable_if::value && + is_constructible<_T2, _U2>::value>::type* = 0) : first(_VSTD::forward<_U1>(__p.first)), second(_VSTD::forward<_U2>(__p.second)) {} -- GitLab