Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-ID: <3E8558BC.662C6DB3@doe.carleton.ca> Date: Sat, 29 Mar 2003 03:26:36 -0500 From: Fred Ma X-Accept-Language: en MIME-Version: 1.0 Newsgroups: gnu.gcc.help,comp.unix.programmer To: cygwin AT cygwin DOT com Subject: gdb discrepancy in c++ iterators Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hello, I'm having the following problem only on cygwin, not on solaris 8. I have a sanity-check program: #include #include using namespace std; int main(void) { vector vi(3); vector::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 = {> = {}, _M_current = 0xc7e44589} (gdb) p it_vi $2 = {> = {}, _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/