Mail Archives: cygwin/2003/03/29/03:31:06
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/
- Raw text -