This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
libstdc++/4537: reverse_iterator has a member called `current' available
- To: gcc-gnats at gcc dot gnu dot org
- Subject: libstdc++/4537: reverse_iterator has a member called `current' available
- From: brendan at zen dot org
- Date: 11 Oct 2001 14:05:28 -0000
- Reply-To: brendan at zen dot org
>Number: 4537
>Category: libstdc++
>Synopsis: reverse_iterator has a member called `current' available
>Confidential: no
>Severity: serious
>Priority: low
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu Oct 11 07:06:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: Brendan Kehoe
>Release: CVS tree
>Organization:
>Environment:
>Description:
In stl_iterator, reverse_iterator is set up with a member _M_current not intended for use. However, the standard says in $24.4.1.1 that the member `current' is defined to exist.
The attached patch replaces uses of _M_current in reverse_iterator with `current'.
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="diffs-iterator.txt"
Content-Disposition: inline; filename="diffs-iterator.txt"
2001-10-10 Brendan Kehoe <brendan@zen.org>
* include/bits/stl_iterator.h (reverse_iterator::current): Rename
member from _M_current, and change all uses; thus sayeth $24.4.1.1.
Index: include/bits/stl_iterator.h
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/include/bits/stl_iterator.h,v
retrieving revision 1.13
diff -u -p -r1.13 stl_iterator.h
--- stl_iterator.h 2001/07/20 00:09:31 1.13
+++ stl_iterator.h 2001/10/10 11:44:32
@@ -72,7 +72,7 @@ namespace std
typename iterator_traits<_Iterator>::reference>
{
protected:
- _Iterator _M_current;
+ _Iterator current;
public:
typedef _Iterator iterator_type;
@@ -85,22 +85,22 @@ namespace std
reverse_iterator() {}
explicit
- reverse_iterator(iterator_type __x) : _M_current(__x) {}
+ reverse_iterator(iterator_type __x) : current(__x) {}
reverse_iterator(const reverse_iterator& __x)
- : _M_current(__x._M_current) { }
+ : current(__x.current) { }
template<typename _Iter>
reverse_iterator(const reverse_iterator<_Iter>& __x)
- : _M_current(__x.base()) {}
+ : current(__x.base()) {}
iterator_type
- base() const { return _M_current; }
+ base() const { return current; }
reference
operator*() const
{
- _Iterator __tmp = _M_current;
+ _Iterator __tmp = current;
return *--__tmp;
}
@@ -110,7 +110,7 @@ namespace std
reverse_iterator&
operator++()
{
- --_M_current;
+ --current;
return *this;
}
@@ -118,38 +118,38 @@ namespace std
operator++(int)
{
reverse_iterator __tmp = *this;
- --_M_current;
+ --current;
return __tmp;
}
reverse_iterator&
operator--()
{
- ++_M_current;
+ ++current;
return *this;
}
reverse_iterator operator--(int)
{
reverse_iterator __tmp = *this;
- ++_M_current;
+ ++current;
return __tmp;
}
reverse_iterator
operator+(difference_type __n) const
- { return reverse_iterator(_M_current - __n); }
+ { return reverse_iterator(current - __n); }
reverse_iterator&
operator+=(difference_type __n)
{
- _M_current -= __n;
+ current -= __n;
return *this;
}
reverse_iterator
operator-(difference_type __n) const
- { return reverse_iterator(_M_current + __n); }
+ { return reverse_iterator(current + __n); }
reverse_iterator&
operator-=(difference_type __n)
@@ -225,7 +225,7 @@ namespace std
back_insert_iterator(_Container& __x) : container(&__x) {}
back_insert_iterator&
- operator=(const typename _Container::const_reference __value)
+ operator=(typename _Container::const_reference __value)
{
container->push_back(__value);
return *this;
@@ -259,7 +259,7 @@ namespace std
explicit front_insert_iterator(_Container& __x) : container(&__x) {}
front_insert_iterator&
- operator=(const typename _Container::const_reference __value)
+ operator=(typename _Container::const_reference __value)
{
container->push_front(__value);
return *this;