diff options
Diffstat (limited to 'libcxx/include/utility')
-rw-r--r-- | libcxx/include/utility | 32 |
1 files changed, 6 insertions, 26 deletions
diff --git a/libcxx/include/utility b/libcxx/include/utility index c90d049cf7b..64599c8d55d 100644 --- a/libcxx/include/utility +++ b/libcxx/include/utility @@ -69,7 +69,7 @@ struct pair pair(const pair&) = default; pair(pair&&) = default; - explicit(see-below) constexpr pair(); + constexpr pair(); explicit(see-below) pair(const T1& x, const T2& y); // constexpr in C++14 template <class U, class V> explicit(see-below) pair(U&& x, V&& y); // constexpr in C++14 template <class U, class V> explicit(see-below) pair(const pair<U, V>& p); // constexpr in C++14 @@ -99,7 +99,7 @@ template <class T1, class T2> void swap(pair<T1, T2>& x, pair<T1, T2>& y) noexcept(noexcept(x.swap(y))); -struct piecewise_construct_t { explicit piecewise_construct_t() = default; }; +struct piecewise_construct_t { }; inline constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t(); template <class T> struct tuple_size; @@ -276,7 +276,7 @@ template <class _Tp> constexpr add_const_t<_Tp>& as_const(_Tp& __t) noexcept { r template <class _Tp> void as_const(const _Tp&&) = delete; #endif -struct _LIBCPP_TEMPLATE_VIS piecewise_construct_t { explicit piecewise_construct_t() = default; }; +struct _LIBCPP_TEMPLATE_VIS piecewise_construct_t { }; #if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_LIBRARY) extern _LIBCPP_EXPORTED_FROM_ABI const piecewise_construct_t piecewise_construct;// = piecewise_construct_t(); #else @@ -335,21 +335,9 @@ struct _LIBCPP_TEMPLATE_VIS pair struct _CheckArgs { template <class _U1, class _U2> - static constexpr bool __enable_explicit_default() { + static constexpr bool __enable_default() { return is_default_constructible<_U1>::value - && is_default_constructible<_U2>::value - && !__enable_implicit_default<_U1, _U2>(); - } - - template <class _U1, class _U2> - static constexpr bool __enable_implicit_default() { - // In C++03, there's no way to implement the resolution of LWG2510. -#ifdef _LIBCPP_CXX03_LANG - return true; -#else - return __is_implicitly_default_constructible<_U1>::value - && __is_implicitly_default_constructible<_U2>::value; -#endif + && is_default_constructible<_U2>::value; } template <class _U1, class _U2> @@ -400,15 +388,7 @@ struct _LIBCPP_TEMPLATE_VIS pair >::type; template<bool _Dummy = true, _EnableB< - _CheckArgsDep<_Dummy>::template __enable_explicit_default<_T1, _T2>() - > = false> - explicit _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - pair() _NOEXCEPT_(is_nothrow_default_constructible<first_type>::value && - is_nothrow_default_constructible<second_type>::value) - : first(), second() {} - - template<bool _Dummy = true, _EnableB< - _CheckArgsDep<_Dummy>::template __enable_implicit_default<_T1, _T2>() + _CheckArgsDep<_Dummy>::template __enable_default<_T1, _T2>() > = false> _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR pair() _NOEXCEPT_(is_nothrow_default_constructible<first_type>::value && |