diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 3dfa2c3b1474..742083107b00 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2010-11-09 Paolo Carlini + + * include/bits/stl_tree.h (_Rb_tree<>::_M_const_cast_iter): Add + and use it throughout. + 2010-11-09 Paolo Carlini PR libstdc++/46385 diff --git a/libstdc++-v3/include/bits/stl_tree.h b/libstdc++-v3/include/bits/stl_tree.h index b85398de3f3e..3ffd996ae93a 100644 --- a/libstdc++-v3/include/bits/stl_tree.h +++ b/libstdc++-v3/include/bits/stl_tree.h @@ -556,6 +556,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std) typedef std::reverse_iterator const_reverse_iterator; private: + iterator + _M_const_cast_iter(const_iterator __cit) + { return iterator(static_cast<_Link_type> + (const_cast<_Base_ptr>(__cit._M_node))); } + iterator _M_insert_(_Const_Base_ptr __x, _Const_Base_ptr __y, const value_type& __v); @@ -719,8 +724,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) const_iterator __result = __position; ++__result; _M_erase_aux(__position); - return iterator(static_cast<_Link_type> - (const_cast<_Base_ptr>(__result._M_node))); + return _M_const_cast_iter(__result); } #else void @@ -737,8 +741,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) erase(const_iterator __first, const_iterator __last) { _M_erase_aux(__first, __last); - return iterator(static_cast<_Link_type> - (const_cast<_Base_ptr>(__last._M_node))); + return _M_const_cast_iter(__last); } #else void @@ -1279,8 +1282,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) } else // Equivalent keys. - return iterator(static_cast<_Link_type> - (const_cast<_Base_ptr>(__position._M_node))); + return _M_const_cast_iter(__position); } template