stl_tree.h (_Rb_tree<>::_M_const_cast_iter): Add and use it throughout.
[gcc.git] / libstdc++-v3 / include / bits / stl_tree.h
index b85398de3f3ebc0f28c0891d2d7de3860fa356a2..3ffd996ae93a1f52c3026a5c4d28d87b6a3a43b3 100644 (file)
@@ -556,6 +556,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
       typedef std::reverse_iterator<const_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<typename _Key, typename _Val, typename _KeyOfValue,