aboutsummaryrefslogtreecommitdiff
path: root/libcxx/include/__tree
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/include/__tree')
-rw-r--r--libcxx/include/__tree42
1 files changed, 9 insertions, 33 deletions
diff --git a/libcxx/include/__tree b/libcxx/include/__tree
index 6ca1a62..3dd5ae5 100644
--- a/libcxx/include/__tree
+++ b/libcxx/include/__tree
@@ -13,9 +13,7 @@
#include <__algorithm/min.h>
#include <__assert>
#include <__config>
-#include <__fwd/map.h>
#include <__fwd/pair.h>
-#include <__fwd/set.h>
#include <__iterator/distance.h>
#include <__iterator/iterator_traits.h>
#include <__iterator/next.h>
@@ -686,16 +684,6 @@ private:
friend class __tree;
template <class, class, class>
friend class __tree_const_iterator;
- template <class>
- friend class __map_iterator;
- template <class, class, class, class>
- friend class map;
- template <class, class, class, class>
- friend class multimap;
- template <class, class, class>
- friend class set;
- template <class, class, class>
- friend class multiset;
};
template <class _Tp, class _NodePtr, class _DiffType>
@@ -709,18 +697,15 @@ class __tree_const_iterator {
__end_node_pointer __ptr_;
public:
- using iterator_category = bidirectional_iterator_tag;
- using value_type = __get_node_value_type_t<_Tp>;
- using difference_type = _DiffType;
- using reference = const value_type&;
- using pointer = __rebind_pointer_t<_NodePtr, const value_type>;
+ using iterator_category = bidirectional_iterator_tag;
+ using value_type = __get_node_value_type_t<_Tp>;
+ using difference_type = _DiffType;
+ using reference = const value_type&;
+ using pointer = __rebind_pointer_t<_NodePtr, const value_type>;
+ using __non_const_iterator _LIBCPP_NODEBUG = __tree_iterator<_Tp, __node_pointer, difference_type>;
_LIBCPP_HIDE_FROM_ABI __tree_const_iterator() _NOEXCEPT : __ptr_(nullptr) {}
-private:
- typedef __tree_iterator<_Tp, __node_pointer, difference_type> __non_const_iterator;
-
-public:
_LIBCPP_HIDE_FROM_ABI __tree_const_iterator(__non_const_iterator __p) _NOEXCEPT : __ptr_(__p.__ptr_) {}
_LIBCPP_HIDE_FROM_ABI reference operator*() const { return __get_np()->__value_; }
@@ -762,16 +747,6 @@ private:
template <class, class, class>
friend class __tree;
- template <class, class, class, class>
- friend class map;
- template <class, class, class, class>
- friend class multimap;
- template <class, class, class>
- friend class set;
- template <class, class, class>
- friend class multiset;
- template <class>
- friend class __map_const_iterator;
};
template <class _Tp, class _Compare>
@@ -1388,8 +1363,9 @@ __tree<_Tp, _Compare, _Allocator>& __tree<_Tp, _Compare, _Allocator>::operator=(
if (__root())
__root()->__parent_ = __end_node();
}
- __begin_node_ = static_cast<__end_node_pointer>(std::__tree_min(static_cast<__node_base_pointer>(__end_node())));
- __size_ = __t.size();
+ __begin_node_ =
+ __end_node()->__left_ ? static_cast<__end_node_pointer>(std::__tree_min(__end_node()->__left_)) : __end_node();
+ __size_ = __t.size();
return *this;
}