52    typedef _Node_base::_Base_const_ptr _Base_const_ptr;
 
   53    _Base_const_ptr _M_node;
 
   55    inline _Base_iterator(_Base_const_ptr 
const __N = NULL)
 
   57    inline _Base_iterator(_Base_iterator 
const& __THAT)
 
   58      : _M_node(__THAT._M_node) {}
 
   63      if (_M_node->_M_right)
 
   65            _M_node = _M_node->_M_right;
 
   66            while (_M_node->_M_left) _M_node = _M_node->_M_left;
 
   70          _Base_const_ptr __p = _M_node->_M_parent;
 
   71          while (__p && _M_node == __p->_M_right)
 
   74              __p = _M_node->_M_parent;
 
   85      if (!_M_node->_M_parent) 
 
   87          _M_node = _M_node->_M_right;
 
   89      else if (_M_node->_M_left)
 
   91          _Base_const_ptr x = _M_node->_M_left;
 
   92          while (x->_M_right) x = x->_M_right;
 
   97          _Base_const_ptr __p = _M_node->_M_parent;
 
   98          while (__p && _M_node == __p->_M_left) 
 
  101              __p = _M_node->_M_parent;
 
  109    template <
size_t const __K, 
typename _Val, 
typename _Acc,
 
  110              typename _Dist, 
typename _Cmp, 
typename _Alloc>
 
 
  115    class _Iterator : 
protected _Base_iterator
 
  118      typedef _Val value_type;
 
  119      typedef _Ref reference;
 
  120      typedef _Ptr pointer;
 
  121      typedef _Iterator<_Val, _Val&, _Val*> iterator;
 
  122      typedef _Iterator<_Val, _Val const&, _Val const*> const_iterator;
 
  123      typedef _Iterator<_Val, _Ref, _Ptr> _Self;
 
  125      typedef std::bidirectional_iterator_tag iterator_category;
 
  126      typedef std::ptrdiff_t difference_type;
 
  129        : _Base_iterator() {}
 
  130      inline _Iterator(_Link_const_type 
const __N)
 
  131        : _Base_iterator(__N) {}
 
  132      inline _Iterator(iterator 
const& __THAT)
 
  133        : _Base_iterator(__THAT) {}
 
  135      _Link_const_type get_raw_node()
 const 
  137         return _Link_const_type(_M_node);
 
  143        return _Link_const_type(_M_node)->_M_value;
 
  149        return &(operator*());
 
  183      operator== <>(_Iterator<_Val, _Ref, _Ptr> 
const&,
 
  184                    _Iterator<_Val, _Ref, _Ptr> 
const&);
 
  187      operator== <>(_Iterator<_Val, const _Val&, const _Val*> 
const&,
 
  188                    _Iterator<_Val, _Val&, _Val*> 
const&);
 
  191      operator== <>(_Iterator<_Val, _Val&, _Val*> 
const&,
 
  192                    _Iterator<_Val, const _Val&, const _Val*> 
const&);
 
  195      operator!= <>(_Iterator<_Val, _Ref, _Ptr> 
const&,
 
  196                    _Iterator<_Val, _Ref, _Ptr> 
const&);
 
  199      operator!= <>(_Iterator<_Val, const _Val&, const _Val*> 
const&,
 
  200                    _Iterator<_Val, _Val&, _Val*> 
const&);
 
  203      operator!= <>(_Iterator<_Val, _Val&, _Val*> 
const&,
 
  204                    _Iterator<_Val, const _Val&, const _Val*> 
const&);