From fee84d551f8cc48c79d92a2af1ccfa2272bed215 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Dumont?= Date: Thu, 11 May 2017 20:30:44 +0000 Subject: [PATCH] =?utf8?q?2017-05-11=20=20Fran=C3=A7ois=20Dumont=20=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * include/bits/stl_tree.h [_GLIBCXX_INLINE_VERSION] (_Rb_tree_impl<>): Remove _Is_pod_comparator template parameter. From-SVN: r247929 --- libstdc++-v3/ChangeLog | 6 +- libstdc++-v3/include/bits/stl_tree.h | 202 ++++++++++++++------------- 2 files changed, 107 insertions(+), 101 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 6d626f2343f..1aea9ca01c8 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,9 @@ 2017-05-11 François Dumont + * include/bits/stl_tree.h [_GLIBCXX_INLINE_VERSION] + (_Rb_tree_impl<>): Remove _Is_pod_comparator + template parameter. + * include/debug/safe_container.h [_GLIBCXX_USE_CXX11_ABI] (_Safe_container<>): Remove _IsCxx11AllocatorAware template parameter. * include/debug/string: Adapt. @@ -48,8 +52,6 @@ * include/std/variant: Adapt. * python/libstdcxx/v6/printers.py: Adapt. * testsuite/libstdc++-prettyprinters/48362.cc: Adapt. - * include/bits/stl_tree.h (_Rb_tree_impl<>): Remove _Is_pod_comparator - template parameter when version namespace is active. * include/bits/stl_algobase.h (std::__iter_swap): Remove _GLIBCXX_MOVE usage. diff --git a/libstdc++-v3/include/bits/stl_tree.h b/libstdc++-v3/include/bits/stl_tree.h index ce7ecdaa87a..aedee06be76 100644 --- a/libstdc++-v3/include/bits/stl_tree.h +++ b/libstdc++-v3/include/bits/stl_tree.h @@ -91,7 +91,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // time begin(), and to the rightmost node of the tree, to enable // linear time performance when used with the generic set algorithms // (set_union, etc.) - // + // // (2) when a node being deleted has two children its successor node // is relinked into its place, rather than copied, so that the only // iterators invalidated are those referring to the deleted node. @@ -260,11 +260,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typedef _Tp* pointer; typedef bidirectional_iterator_tag iterator_category; - typedef ptrdiff_t difference_type; + typedef ptrdiff_t difference_type; - typedef _Rb_tree_iterator<_Tp> _Self; + typedef _Rb_tree_iterator<_Tp> _Self; typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; - typedef _Rb_tree_node<_Tp>* _Link_type; + typedef _Rb_tree_node<_Tp>* _Link_type; _Rb_tree_iterator() _GLIBCXX_NOEXCEPT : _M_node() { } @@ -325,18 +325,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template struct _Rb_tree_const_iterator { - typedef _Tp value_type; + typedef _Tp value_type; typedef const _Tp& reference; typedef const _Tp* pointer; typedef _Rb_tree_iterator<_Tp> iterator; typedef bidirectional_iterator_tag iterator_category; - typedef ptrdiff_t difference_type; + typedef ptrdiff_t difference_type; - typedef _Rb_tree_const_iterator<_Tp> _Self; - typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr; - typedef const _Rb_tree_node<_Tp>* _Link_type; + typedef _Rb_tree_const_iterator<_Tp> _Self; + typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr; + typedef const _Rb_tree_node<_Tp>* _Link_type; _Rb_tree_const_iterator() _GLIBCXX_NOEXCEPT : _M_node() { } @@ -404,20 +404,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template inline bool operator==(const _Rb_tree_iterator<_Val>& __x, - const _Rb_tree_const_iterator<_Val>& __y) _GLIBCXX_NOEXCEPT + const _Rb_tree_const_iterator<_Val>& __y) _GLIBCXX_NOEXCEPT { return __x._M_node == __y._M_node; } template inline bool operator!=(const _Rb_tree_iterator<_Val>& __x, - const _Rb_tree_const_iterator<_Val>& __y) _GLIBCXX_NOEXCEPT + const _Rb_tree_const_iterator<_Val>& __y) _GLIBCXX_NOEXCEPT { return __x._M_node != __y._M_node; } void _Rb_tree_insert_and_rebalance(const bool __insert_left, - _Rb_tree_node_base* __x, - _Rb_tree_node_base* __p, - _Rb_tree_node_base& __header) throw (); + _Rb_tree_node_base* __x, + _Rb_tree_node_base* __p, + _Rb_tree_node_base& __header) throw (); _Rb_tree_node_base* _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, @@ -440,11 +440,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif template > + typename _Compare, typename _Alloc = allocator<_Val> > class _Rb_tree { typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template - rebind<_Rb_tree_node<_Val> >::other _Node_allocator; + rebind<_Rb_tree_node<_Val> >::other _Node_allocator; typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Alloc_traits; @@ -573,7 +573,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _Node_allocator& _M_get_Node_allocator() _GLIBCXX_NOEXCEPT { return *static_cast<_Node_allocator*>(&this->_M_impl); } - + const _Node_allocator& _M_get_Node_allocator() const _GLIBCXX_NOEXCEPT { return *static_cast(&this->_M_impl); } @@ -636,8 +636,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template - _Link_type - _M_create_node(_Args&&... __args) + _Link_type + _M_create_node(_Args&&... __args) { _Link_type __tmp = _M_get_node(); _M_construct_node(__tmp, std::forward<_Args>(__args)...); @@ -671,14 +671,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } protected: +#if _GLIBCXX_INLINE_VERSION + template +#else // Unused _Is_pod_comparator is kept as it is part of mangled name. template - struct _Rb_tree_impl +#endif + struct _Rb_tree_impl : public _Node_allocator , public _Rb_tree_key_compare<_Key_compare> , public _Rb_tree_header - { + { typedef _Rb_tree_key_compare<_Key_compare> _Base_key_compare; #if __cplusplus < 201103L @@ -828,19 +832,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION private: #if __cplusplus >= 201103L template - iterator + iterator _M_insert_(_Base_ptr __x, _Base_ptr __y, _Arg&& __v, _NodeGen&); iterator _M_insert_node(_Base_ptr __x, _Base_ptr __y, _Link_type __z); template - iterator - _M_insert_lower(_Base_ptr __y, _Arg&& __v); + iterator + _M_insert_lower(_Base_ptr __y, _Arg&& __v); template - iterator - _M_insert_equal_lower(_Arg&& __x); + iterator + _M_insert_equal_lower(_Arg&& __x); iterator _M_insert_lower_node(_Base_ptr __p, _Link_type __z); @@ -991,7 +995,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return _M_impl._M_node_count == 0; } size_type - size() const _GLIBCXX_NOEXCEPT + size() const _GLIBCXX_NOEXCEPT { return _M_impl._M_node_count; } size_type @@ -1005,15 +1009,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Insert/erase. #if __cplusplus >= 201103L template - pair - _M_insert_unique(_Arg&& __x); + pair + _M_insert_unique(_Arg&& __x); template - iterator - _M_insert_equal(_Arg&& __x); + iterator + _M_insert_equal(_Arg&& __x); template - iterator + iterator _M_insert_unique_(const_iterator __pos, _Arg&& __x, _NodeGen&); template @@ -1083,12 +1087,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif template - void - _M_insert_unique(_InputIterator __first, _InputIterator __last); + void + _M_insert_unique(_InputIterator __first, _InputIterator __last); template - void - _M_insert_equal(_InputIterator __first, _InputIterator __last); + void + _M_insert_equal(_InputIterator __first, _InputIterator __last); private: void @@ -1166,7 +1170,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION void clear() _GLIBCXX_NOEXCEPT { - _M_erase(_M_begin()); + _M_erase(_M_begin()); _M_impl._M_reset(); } @@ -1526,7 +1530,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; template + typename _Compare, typename _Alloc> inline bool operator==(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) @@ -1536,7 +1540,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> inline bool operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) @@ -1546,35 +1550,35 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> inline bool operator!=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) { return !(__x == __y); } template + typename _Compare, typename _Alloc> inline bool operator>(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) { return __y < __x; } template + typename _Compare, typename _Alloc> inline bool operator<=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) { return !(__y < __x); } template + typename _Compare, typename _Alloc> inline bool operator>=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) { return !(__x < __y); } template + typename _Compare, typename _Alloc> inline void swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) @@ -1582,7 +1586,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus >= 201103L template + typename _Compare, typename _Alloc> _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a) : _M_impl(__x._M_impl._M_key_compare, std::move(__a)) @@ -1593,7 +1597,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_move_data(_Rb_tree& __x, std::false_type) @@ -1614,7 +1618,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> inline void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_move_assign(_Rb_tree& __x, true_type) @@ -1627,7 +1631,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_move_assign(_Rb_tree& __x, false_type) @@ -1653,7 +1657,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> inline _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: operator=(_Rb_tree&& __x) @@ -1666,7 +1670,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> template void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -1679,7 +1683,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> template void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -1693,7 +1697,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif template + typename _Compare, typename _Alloc> _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: operator=(const _Rb_tree& __x) @@ -1728,7 +1732,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> #if __cplusplus >= 201103L template #else @@ -1757,7 +1761,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> #if __cplusplus >= 201103L template #endif @@ -1782,7 +1786,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> #if __cplusplus >= 201103L template #endif @@ -1800,7 +1804,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { __y = __x; __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ? - _S_left(__x) : _S_right(__x); + _S_left(__x) : _S_right(__x); } return _M_insert_lower(__y, _GLIBCXX_FORWARD(_Arg, __v)); } @@ -1843,7 +1847,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_erase(_Link_type __x) @@ -1859,7 +1863,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -1875,7 +1879,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -1891,7 +1895,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -1907,7 +1911,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -1923,7 +1927,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> pair::iterator, typename _Rb_tree<_Key, _Val, _KeyOfValue, @@ -1946,7 +1950,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __y = __x, __x = _S_left(__x); __xu = _S_right(__xu); return pair(_M_lower_bound(__x, __y, __k), + iterator>(_M_lower_bound(__x, __y, __k), _M_upper_bound(__xu, __yu, __k)); } } @@ -1955,7 +1959,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> pair::const_iterator, typename _Rb_tree<_Key, _Val, _KeyOfValue, @@ -1978,7 +1982,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __y = __x, __x = _S_left(__x); __xu = _S_right(__xu); return pair(_M_lower_bound(__x, __y, __k), + const_iterator>(_M_lower_bound(__x, __y, __k), _M_upper_bound(__xu, __yu, __k)); } } @@ -1987,7 +1991,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: swap(_Rb_tree& __t) @@ -2005,7 +2009,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION std::swap(_M_root(),__t._M_root()); std::swap(_M_leftmost(),__t._M_leftmost()); std::swap(_M_rightmost(),__t._M_rightmost()); - + _M_root()->_M_parent = _M_end(); __t._M_root()->_M_parent = __t._M_end(); std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count); @@ -2018,7 +2022,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> pair::_Base_ptr, typename _Rb_tree<_Key, _Val, _KeyOfValue, @@ -2050,7 +2054,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> pair::_Base_ptr, typename _Rb_tree<_Key, _Val, _KeyOfValue, @@ -2065,13 +2069,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { __y = __x; __x = _M_impl._M_key_compare(__k, _S_key(__x)) ? - _S_left(__x) : _S_right(__x); + _S_left(__x) : _S_right(__x); } return _Res(__x, __y); } template + typename _Compare, typename _Alloc> #if __cplusplus >= 201103L template #endif @@ -2100,7 +2104,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> #if __cplusplus >= 201103L template #endif @@ -2120,10 +2124,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> pair::_Base_ptr, - typename _Rb_tree<_Key, _Val, _KeyOfValue, + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Base_ptr> _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_get_insert_hint_unique_pos(const_iterator __position, @@ -2179,7 +2183,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> #if __cplusplus >= 201103L template #else @@ -2206,10 +2210,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> pair::_Base_ptr, - typename _Rb_tree<_Key, _Val, _KeyOfValue, + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Base_ptr> _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_get_insert_hint_equal_pos(const_iterator __position, const key_type& __k) @@ -2244,7 +2248,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } else { - // ... then try after. + // ... then try after. iterator __after = __pos; if (__pos._M_node == _M_rightmost()) return _Res(0, _M_rightmost()); @@ -2261,7 +2265,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> #if __cplusplus >= 201103L template #else @@ -2290,7 +2294,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus >= 201103L template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_insert_node(_Base_ptr __x, _Base_ptr __p, _Link_type __z) @@ -2306,7 +2310,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_insert_lower_node(_Base_ptr __p, _Link_type __z) @@ -2322,7 +2326,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_insert_equal_lower_node(_Link_type __z) @@ -2333,13 +2337,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { __y = __x; __x = !_M_impl._M_key_compare(_S_key(__x), _S_key(__z)) ? - _S_left(__x) : _S_right(__x); + _S_left(__x) : _S_right(__x); } return _M_insert_lower_node(__y, __z); } template + typename _Compare, typename _Alloc> template pair::iterator, bool> @@ -2366,7 +2370,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> template typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -2387,7 +2391,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> template typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -2413,7 +2417,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> template typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -2439,7 +2443,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif template + typename _Cmp, typename _Alloc> template void _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: @@ -2451,7 +2455,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Cmp, typename _Alloc> template void _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: @@ -2463,7 +2467,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_erase_aux(const_iterator __position) @@ -2477,7 +2481,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_erase_aux(const_iterator __first, const_iterator __last) @@ -2490,7 +2494,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: erase(const _Key& __x) @@ -2502,7 +2506,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: erase(const _Key* __first, const _Key* __last) @@ -2512,7 +2516,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -2525,7 +2529,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -2533,12 +2537,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { const_iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k); return (__j == end() - || _M_impl._M_key_compare(__k, + || _M_impl._M_key_compare(__k, _S_key(__j._M_node))) ? end() : __j; } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: count(const _Key& __k) const @@ -2550,10 +2554,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_PURE unsigned int _Rb_tree_black_count(const _Rb_tree_node_base* __node, - const _Rb_tree_node_base* __root) throw (); + const _Rb_tree_node_base* __root) throw (); template + typename _Compare, typename _Alloc> bool _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const { -- 2.30.2