From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26260 invoked by alias); 29 Nov 2004 17:59:48 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 26196 invoked from network); 29 Nov 2004 17:59:41 -0000 Received: from unknown (HELO vaxjo.synopsys.com) (198.182.60.75) by sourceware.org with SMTP; 29 Nov 2004 17:59:41 -0000 Received: from crone.synopsys.com (crone.synopsys.com [146.225.7.23]) by vaxjo.synopsys.com (Postfix) with ESMTP id A17D0DCC7; Mon, 29 Nov 2004 09:59:40 -0800 (PST) Received: from piper.synopsys.com (localhost [127.0.0.1]) by crone.synopsys.com (8.9.1/8.9.1) with ESMTP id JAA16061; Mon, 29 Nov 2004 09:59:40 -0800 (PST) Received: (from jbuck@localhost) by piper.synopsys.com (8.11.6/8.11.6) id iATHxdN02037; Mon, 29 Nov 2004 09:59:39 -0800 X-Authentication-Warning: piper.synopsys.com: jbuck set sender to Joe.Buck@synopsys.com using -f Date: Mon, 29 Nov 2004 18:06:00 -0000 From: Joe Buck To: Matt Austern Cc: Gabriel Dos Reis , gcc@gcc.gnu.org, Ian Lance Taylor , "Joseph S. Myers" Subject: Re: generalized lvalues -- patch outline Message-ID: <20041129095939.D1687@synopsys.com> References: <4D2CF60C-3919-11D9-8BD2-000A95BCF344@apple.com> <200411232305.56192.ebotcazou@libertysurf.fr> <200411240051.19500.ebotcazou@libertysurf.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: ; from austern@apple.com on Thu, Nov 25, 2004 at 01:06:42PM -0800 X-SW-Source: 2004-11/txt/msg01140.txt.bz2 On Thu, Nov 25, 2004 at 01:06:42PM -0800, Matt Austern wrote: [ cast-as-lvalue extension ] > I changed my mind, and reluctantly agreed that immediate removal was > the best option, because of what Joe Buck pointed out: that this wasn't > a pure extension, but that it actually changed the meaning of legal C++ > programs by causing them to select the wrong overload in some cases. > This was a serious bug. Seen in that light, removal seemed like the > only possible answer: obviously we have to fix bugs. There is another possible answer if it is decided that some limited form of cast-as-lvalue must be kept (presumably under the control of some option, or maybe just for Objective-C++): casts can be considered to be non-lvalues for the purpose of overload resolution, unless there is no match (at which point it can be considered an lvalue so that the appropriate operator= or operator++ can be looked up). This would turn the extension back into a pure extension, at the cost of kludging up the front end.