Hello, I'm having the following problem only on cygwin, not on solaris 8. I have a sanity-check program:
#include<vector> #include<iostream> using namespace std; int main(void) { vector<int> vi(3); vector<int>::iterator it_vi = vi.begin(); cout << "Hello world."; } I compile it with gcc 3.2 use gdb2003-03-03-cvs(cygwin-special) to view vi.begin() and it_vi. They are different: (gdb) p vi.begin() $1 = {<iterator<std::random_access_iterator_tag,int,int,int*,int&>> = {<No data fields>}, _M_current = 0xc7e44589} (gdb) p it_vi $2 = {<iterator<std::random_access_iterator_tag,int,int,int*,int&>> = {<No data fields>}, _M_current = 0xa041de0} Why are they different? If I actually dereference the iterators, they contain the same thing. But I want to deal with the iterators themselves. In particular, I want a conditional breakpoint to trigger when it_vi==vi.begin()+4. gdb won't let you add 4 to a random access iterator, so I have to use the _M_current member data. Since they are not the same above, I can't do that. Thanks for any light on why they differ. Fred -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/