[libcxx] r300408 - Cleanup and better scope unique_ptr internals

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Sat Apr 15 19:14:32 PDT 2017


Author: ericwf
Date: Sat Apr 15 21:14:31 2017
New Revision: 300408

URL: http://llvm.org/viewvc/llvm-project?rev=300408&view=rev
Log:
Cleanup and better scope unique_ptr internals

Modified:
    libcxx/trunk/include/memory

Modified: libcxx/trunk/include/memory
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/memory?rev=300408&r1=300407&r2=300408&view=diff
==============================================================================
--- libcxx/trunk/include/memory (original)
+++ libcxx/trunk/include/memory Sat Apr 15 21:14:31 2017
@@ -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 <bool _Dummy>
   using _LValRefType =
-      typename __dependent_type<_SFINAE, _Dummy>::__lval_ref_type;
+      typename __dependent_type<_DeleterSFINAE, _Dummy>::__lval_ref_type;
 
   template <bool _Dummy>
   using _GoodRValRefType =
-      typename __dependent_type<_SFINAE, _Dummy>::__good_rval_ref_type;
+      typename __dependent_type<_DeleterSFINAE, _Dummy>::__good_rval_ref_type;
 
   template <bool _Dummy>
   using _BadRValRefType =
-      typename __dependent_type<_SFINAE, _Dummy>::__bad_rval_ref_type;
+      typename __dependent_type<_DeleterSFINAE, _Dummy>::__bad_rval_ref_type;
 
   template <bool _Dummy, class _Deleter = typename __dependent_type<
                              __identity<deleter_type>, _Dummy>::type>
@@ -2587,17 +2587,6 @@ public:
   }
 };
 
-template <class _From, class _ToUnique>
-struct __check_array_pointer_conversion : is_same<_From, typename _ToUnique::pointer> {};
-
-template <class _FromElem, class _ToUnique>
-struct __check_array_pointer_conversion<_FromElem*, _ToUnique>
-    : integral_constant<bool,
-        is_same<_FromElem*, typename _ToUnique::pointer>::value ||
-          (is_same<typename _ToUnique::pointer, typename _ToUnique::element_type*>::value &&
-           is_convertible<_FromElem(*)[], typename _ToUnique::element_type(*)[]>::value)
-    >
-{};
 
 template <class _Tp, class _Dp>
 class _LIBCPP_TEMPLATE_VIS unique_ptr<_Tp[], _Dp> {
@@ -2609,26 +2598,32 @@ public:
 private:
   __compressed_pair<pointer, deleter_type> __ptr_;
 
-  struct __nat { int __for_bool_; };
+  template <class _From>
+  struct _CheckArrayPointerConversion : is_same<_From, pointer> {};
 
-  typedef deleter_type& _Dp_reference;
-  typedef typename remove_reference<typename add_const<deleter_type>::type>::type&
-      _Dp_const_reference;
+  template <class _FromElem>
+  struct _CheckArrayPointerConversion<_FromElem*>
+      : integral_constant<bool,
+          is_same<_FromElem*, pointer>::value ||
+            (is_same<pointer, element_type*>::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 <bool _Dummy>
   using _LValRefType =
-      typename __dependent_type<_SFINAE, _Dummy>::__lval_ref_type;
+      typename __dependent_type<_DeleterSFINAE, _Dummy>::__lval_ref_type;
 
   template <bool _Dummy>
   using _GoodRValRefType =
-      typename __dependent_type<_SFINAE, _Dummy>::__good_rval_ref_type;
+      typename __dependent_type<_DeleterSFINAE, _Dummy>::__good_rval_ref_type;
 
   template <bool _Dummy>
   using _BadRValRefType =
-      typename __dependent_type<_SFINAE, _Dummy>::__bad_rval_ref_type;
+      typename __dependent_type<_DeleterSFINAE, _Dummy>::__bad_rval_ref_type;
 
   template <bool _Dummy, class _Deleter = typename __dependent_type<
                              __identity<deleter_type>, _Dummy>::type>
@@ -2642,7 +2637,7 @@ private:
 
   template <class _Pp>
   using _EnableIfPointerConvertible = typename enable_if<
-      __check_array_pointer_conversion<_Pp, unique_ptr>::value
+      _CheckArrayPointerConversion<_Pp>::value
   >::type;
 
   template <class _UPtr, class _Up,
@@ -2860,7 +2855,7 @@ public:
   template <class _Pp>
   _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();




More information about the cfe-commits mailing list