From: Eric Fiselier Date: Sun, 16 Apr 2017 02:14:31 +0000 (+0000) Subject: Cleanup and better scope unique_ptr internals X-Git-Tag: llvmorg-5.0.0-rc1~7601 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=92e61e93ffb3cf02e037b8b6369ade33e54fe2e3;p=platform%2Fupstream%2Fllvm.git Cleanup and better scope unique_ptr internals llvm-svn: 300408 --- diff --git a/libcxx/include/memory b/libcxx/include/memory index 41c3bda..44a0c34 100644 --- a/libcxx/include/memory +++ b/libcxx/include/memory @@ -2342,19 +2342,19 @@ private: struct __nat { int __for_bool_; }; #ifndef _LIBCPP_CXX03_LANG - typedef __unique_ptr_deleter_sfinae<_Dp> _SFINAE; + typedef __unique_ptr_deleter_sfinae<_Dp> _DeleterSFINAE; template using _LValRefType = - typename __dependent_type<_SFINAE, _Dummy>::__lval_ref_type; + typename __dependent_type<_DeleterSFINAE, _Dummy>::__lval_ref_type; template using _GoodRValRefType = - typename __dependent_type<_SFINAE, _Dummy>::__good_rval_ref_type; + typename __dependent_type<_DeleterSFINAE, _Dummy>::__good_rval_ref_type; template using _BadRValRefType = - typename __dependent_type<_SFINAE, _Dummy>::__bad_rval_ref_type; + typename __dependent_type<_DeleterSFINAE, _Dummy>::__bad_rval_ref_type; template , _Dummy>::type> @@ -2587,17 +2587,6 @@ public: } }; -template -struct __check_array_pointer_conversion : is_same<_From, typename _ToUnique::pointer> {}; - -template -struct __check_array_pointer_conversion<_FromElem*, _ToUnique> - : integral_constant::value || - (is_same::value && - is_convertible<_FromElem(*)[], typename _ToUnique::element_type(*)[]>::value) - > -{}; template class _LIBCPP_TEMPLATE_VIS unique_ptr<_Tp[], _Dp> { @@ -2609,26 +2598,32 @@ public: private: __compressed_pair __ptr_; - struct __nat { int __for_bool_; }; + template + struct _CheckArrayPointerConversion : is_same<_From, pointer> {}; - typedef deleter_type& _Dp_reference; - typedef typename remove_reference::type>::type& - _Dp_const_reference; + template + struct _CheckArrayPointerConversion<_FromElem*> + : integral_constant::value || + (is_same::value && + is_convertible<_FromElem(*)[], element_type(*)[]>::value) + > + {}; #ifndef _LIBCPP_CXX03_LANG - typedef __unique_ptr_deleter_sfinae<_Dp> _SFINAE; + typedef __unique_ptr_deleter_sfinae<_Dp> _DeleterSFINAE; template using _LValRefType = - typename __dependent_type<_SFINAE, _Dummy>::__lval_ref_type; + typename __dependent_type<_DeleterSFINAE, _Dummy>::__lval_ref_type; template using _GoodRValRefType = - typename __dependent_type<_SFINAE, _Dummy>::__good_rval_ref_type; + typename __dependent_type<_DeleterSFINAE, _Dummy>::__good_rval_ref_type; template using _BadRValRefType = - typename __dependent_type<_SFINAE, _Dummy>::__bad_rval_ref_type; + typename __dependent_type<_DeleterSFINAE, _Dummy>::__bad_rval_ref_type; template , _Dummy>::type> @@ -2642,7 +2637,7 @@ private: template using _EnableIfPointerConvertible = typename enable_if< - __check_array_pointer_conversion<_Pp, unique_ptr>::value + _CheckArrayPointerConversion<_Pp>::value >::type; template _LIBCPP_INLINE_VISIBILITY typename enable_if< - __check_array_pointer_conversion<_Pp, unique_ptr>::value + _CheckArrayPointerConversion<_Pp>::value >::type reset(_Pp __p) _NOEXCEPT { pointer __tmp = __ptr_.first();