On Jul 6, 2010, at 7:21 AM, "andre dot bergner dot 0 at googlemail dot com" <gcc-bugzi...@gcc.gnu.org> wrote:

This is not a compiler bug, but a bug in the STL iterator class.
The less-than-operator does not work properly.
The following program can reproduce the bug.

#  include  <iostream>
#  include  <vector>
using namespace std;

main() {
  vector<int>  v;
  vector<int>::iterator i = v.begin();
  --i;

I think the behavior is undefined because now i is not inside the vector at all. In fact I think doing --i on an iterator at the begining is undefined.

  cout << ( i - v.begin() )    << endl;  // output: -1
cout << ( i < v.begin() ) << endl; // output: 0 !!! SHOULD BE 1 !!! cout << ( i - v.begin() < 0) << endl; // output: 1 this one is correct
}


--
          Summary: bug in STL iterator class
          Product: gcc
          Version: unknown
           Status: UNCONFIRMED
         Severity: normal
         Priority: P3
        Component: c++
       AssignedTo: unassigned at gcc dot gnu dot org
       ReportedBy: andre dot bergner dot 0 at googlemail dot com
GCC build triplet: -
 GCC host triplet: -
GCC target triplet: -


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44840

Reply via email to