From c8246f69f4e17b877bf42643f3d4360a89232f68 Mon Sep 17 00:00:00 2001 From: Nikolas Klauser Date: Fri, 28 Mar 2025 20:50:23 +0100 Subject: [PATCH] [libc++] Remove friend declarations from __tree (#133237) Instead, make the few functions `map` relies on public. This makes it more clear what is private to `__tree` and what is part of the library-internal interface. --- libcxx/include/__tree | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/libcxx/include/__tree b/libcxx/include/__tree index 08ae8996f8f7..9d28381c8c2c 100644 --- a/libcxx/include/__tree +++ b/libcxx/include/__tree @@ -1225,11 +1225,6 @@ public: _LIBCPP_HIDE_FROM_ABI __node_holder remove(const_iterator __p) _NOEXCEPT; -private: - _LIBCPP_HIDE_FROM_ABI __node_base_pointer& __find_leaf_low(__parent_pointer& __parent, const key_type& __v); - _LIBCPP_HIDE_FROM_ABI __node_base_pointer& __find_leaf_high(__parent_pointer& __parent, const key_type& __v); - _LIBCPP_HIDE_FROM_ABI __node_base_pointer& - __find_leaf(const_iterator __hint, __parent_pointer& __parent, const key_type& __v); // FIXME: Make this function const qualified. Unfortunately doing so // breaks existing code which uses non-const callable comparators. template @@ -1242,12 +1237,6 @@ private: _LIBCPP_HIDE_FROM_ABI __node_base_pointer& __find_equal(const_iterator __hint, __parent_pointer& __parent, __node_base_pointer& __dummy, const _Key& __v); - template - _LIBCPP_HIDE_FROM_ABI __node_holder __construct_node(_Args&&... __args); - - // TODO: Make this _LIBCPP_HIDE_FROM_ABI - _LIBCPP_HIDDEN void destroy(__node_pointer __nd) _NOEXCEPT; - _LIBCPP_HIDE_FROM_ABI void __copy_assign_alloc(const __tree& __t) { __copy_assign_alloc(__t, integral_constant()); } @@ -1259,6 +1248,18 @@ private: } _LIBCPP_HIDE_FROM_ABI void __copy_assign_alloc(const __tree&, false_type) {} +private: + _LIBCPP_HIDE_FROM_ABI __node_base_pointer& __find_leaf_low(__parent_pointer& __parent, const key_type& __v); + _LIBCPP_HIDE_FROM_ABI __node_base_pointer& __find_leaf_high(__parent_pointer& __parent, const key_type& __v); + _LIBCPP_HIDE_FROM_ABI __node_base_pointer& + __find_leaf(const_iterator __hint, __parent_pointer& __parent, const key_type& __v); + + template + _LIBCPP_HIDE_FROM_ABI __node_holder __construct_node(_Args&&... __args); + + // TODO: Make this _LIBCPP_HIDE_FROM_ABI + _LIBCPP_HIDDEN void destroy(__node_pointer __nd) _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI void __move_assign(__tree& __t, false_type); _LIBCPP_HIDE_FROM_ABI void __move_assign(__tree& __t, true_type) _NOEXCEPT_( is_nothrow_move_assignable::value&& is_nothrow_move_assignable<__node_allocator>::value); @@ -1311,11 +1312,6 @@ private: __node_pointer __cache_root_; __node_pointer __cache_elem_; }; - - template - friend class _LIBCPP_TEMPLATE_VIS map; - template - friend class _LIBCPP_TEMPLATE_VIS multimap; }; template