From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9377 invoked by alias); 15 May 2003 16:01:24 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 9329 invoked by uid 48); 15 May 2003 16:01:24 -0000 Date: Thu, 15 May 2003 16:01:00 -0000 Message-ID: <20030515160124.9325.qmail@sources.redhat.com> To: gandy@abacho.de, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org From: paolo@gcc.gnu.org Reply-To: paolo@gcc.gnu.org, gandy@abacho.de, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org Subject: Re: libstdc++/10794: std::map's erase method invalidates reverse_iterators X-SW-Source: 2003-05/txt/msg01798.txt.bz2 List-Id: Synopsis: std::map's erase method invalidates reverse_iterators State-Changed-From-To: open->closed State-Changed-By: paolo State-Changed-When: Thu May 15 16:01:23 2003 State-Changed-Why: Not a bug: see 24.4.1.1 (or Stroustrup, p. 557). In a nutshell, reverse_iterator is implemented in terms of a plain iterator (called 'current' in the standard) which points one position forward. Therefore, in your testcase, upon erase(90), jt 'current' iterator (which points to 90) is invalidated. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=10794