This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

libstdc++/4537: reverse_iterator has a member called `current' available



>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;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]