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