26
26
template <class _Tp, class _Compare, class _Allocator> class __tree;
27
27
template <class _Tp, class _NodePtr, class _DiffType>
28
class _LIBCPP_TYPE_VIS __tree_iterator;
28
class _LIBCPP_TYPE_VIS_ONLY __tree_iterator;
29
29
template <class _Tp, class _ConstNodePtr, class _DiffType>
30
class _LIBCPP_TYPE_VIS __tree_const_iterator;
31
template <class _Key, class _Tp, class _Compare, class _Allocator>
32
class _LIBCPP_TYPE_VIS map;
33
template <class _Key, class _Tp, class _Compare, class _Allocator>
34
class _LIBCPP_TYPE_VIS multimap;
35
template <class _Key, class _Compare, class _Allocator>
36
class _LIBCPP_TYPE_VIS set;
37
template <class _Key, class _Compare, class _Allocator>
38
class _LIBCPP_TYPE_VIS multiset;
30
class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator;
31
template <class _Key, class _Tp, class _Compare, class _Allocator>
32
class _LIBCPP_TYPE_VIS_ONLY map;
33
template <class _Key, class _Tp, class _Compare, class _Allocator>
34
class _LIBCPP_TYPE_VIS_ONLY multimap;
35
template <class _Key, class _Compare, class _Allocator>
36
class _LIBCPP_TYPE_VIS_ONLY set;
37
template <class _Key, class _Compare, class _Allocator>
38
class _LIBCPP_TYPE_VIS_ONLY multiset;
614
614
#endif // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS)
617
template <class _TreeIterator> class _LIBCPP_TYPE_VIS __map_iterator;
618
template <class _TreeIterator> class _LIBCPP_TYPE_VIS __map_const_iterator;
617
template <class _TreeIterator> class _LIBCPP_TYPE_VIS_ONLY __map_iterator;
618
template <class _TreeIterator> class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator;
620
620
template <class _Tp, class _NodePtr, class _DiffType>
621
class _LIBCPP_TYPE_VIS __tree_iterator
621
class _LIBCPP_TYPE_VIS_ONLY __tree_iterator
623
623
typedef _NodePtr __node_pointer;
624
624
typedef typename pointer_traits<__node_pointer>::element_type __node;
644
_LIBCPP_INLINE_VISIBILITY __tree_iterator() _NOEXCEPT {}
644
_LIBCPP_INLINE_VISIBILITY __tree_iterator() _NOEXCEPT
645
#if _LIBCPP_STD_VER > 11
646
650
_LIBCPP_INLINE_VISIBILITY reference operator*() const {return __ptr_->__value_;}
647
651
_LIBCPP_INLINE_VISIBILITY pointer operator->() const
674
678
_LIBCPP_INLINE_VISIBILITY
675
679
explicit __tree_iterator(__node_pointer __p) _NOEXCEPT : __ptr_(__p) {}
676
680
template <class, class, class> friend class __tree;
677
template <class, class, class> friend class _LIBCPP_TYPE_VIS __tree_const_iterator;
678
template <class> friend class _LIBCPP_TYPE_VIS __map_iterator;
679
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS map;
680
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS multimap;
681
template <class, class, class> friend class _LIBCPP_TYPE_VIS set;
682
template <class, class, class> friend class _LIBCPP_TYPE_VIS multiset;
681
template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator;
682
template <class> friend class _LIBCPP_TYPE_VIS_ONLY __map_iterator;
683
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY map;
684
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multimap;
685
template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY set;
686
template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multiset;
685
689
template <class _Tp, class _ConstNodePtr, class _DiffType>
686
class _LIBCPP_TYPE_VIS __tree_const_iterator
690
class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator
688
692
typedef _ConstNodePtr __node_pointer;
689
693
typedef typename pointer_traits<__node_pointer>::element_type __node;
715
_LIBCPP_INLINE_VISIBILITY __tree_const_iterator() {}
719
_LIBCPP_INLINE_VISIBILITY __tree_const_iterator() _NOEXCEPT
720
#if _LIBCPP_STD_VER > 11
717
726
typedef typename remove_const<__node>::type __non_const_node;
718
727
typedef typename pointer_traits<__node_pointer>::template
761
770
explicit __tree_const_iterator(__node_pointer __p) _NOEXCEPT
763
772
template <class, class, class> friend class __tree;
764
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS map;
765
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS multimap;
766
template <class, class, class> friend class _LIBCPP_TYPE_VIS set;
767
template <class, class, class> friend class _LIBCPP_TYPE_VIS multiset;
768
template <class> friend class _LIBCPP_TYPE_VIS __map_const_iterator;
773
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY map;
774
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multimap;
775
template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY set;
776
template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multiset;
777
template <class> friend class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator;
771
780
template <class _Tp, class _Compare, class _Allocator>
1107
1116
__node_pointer __detach();
1108
1117
static __node_pointer __detach(__node_pointer);
1110
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS map;
1111
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS multimap;
1119
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY map;
1120
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multimap;
1114
1123
template <class _Tp, class _Compare, class _Allocator>
1845
1854
__node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na));
1846
1855
__node_traits::construct(__na, _VSTD::addressof(__h->__value_), __v);
1847
1856
__h.get_deleter().__value_constructed = true;
1848
return _VSTD::move(__h);
1857
return _VSTD::move(__h); // explicitly moved for C++03
1851
1860
#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES