public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Matt Austern <austern@apple.com>
To: Gabriel Dos Reis <gdr@integrable-solutions.net>
Cc: gcc@gcc.gnu.org, Ian Lance Taylor <ian@wasabisystems.com>,
	"Joseph S. Myers" <joseph@codesourcery.com>
Subject: Re: generalized lvalues -- patch outline
Date: Thu, 25 Nov 2004 21:54:00 -0000	[thread overview]
Message-ID: <E8097517-3F25-11D9-B018-000A95BCF344@apple.com> (raw)
In-Reply-To: <m31xehhdsr.fsf@uniton.integrable-solutions.net>

On Nov 25, 2004, at 12:30 PM, Gabriel Dos Reis wrote:

> Ian Lance Taylor <ian@wasabisystems.com> writes:
>
> | completely breaks.  I certainly agree that the warning should have
> | been in 3.3.0,
>
> well, the time travelling machine is a bit expensive for me :-) :-)

But it is still a serious concern.

I've gone back and forth on this question several times.  I think, and 
have always thought, that this is a bad extension (at least for C++) 
and that it was put in without enough thought.  There are other GNU 
extensions for which I'd say that too. But that can't be the end of the 
discussion.  The question is how we should remove an extension once 
we've decided that it's bad.  One extreme answer: you can't ever do it, 
because we must never break user code.  Another extreme answer: you 
should just remove it and not worry about the consequences, and anyone 
who was using a nonstandard extension deserves whatever they get.  I 
prefer something in the middle.

When we first started talking about this, a year ago, I assumed that we 
would have to phase out this extension over the course of three major 
releases.  I assumed we would start the removal process in 3.5, and the 
feature wouldn't be completely dead until 3.7.  Instead we're going 
from having the feature fully supported in 3.4.0 to having it 
completely gone in 4.0.  I'm concerned that we haven't given users 
adequate notice.  (Yes, I know we deprecated it in later releases in 
the 3.3.x and 3.4.x series.  But users can be forgiven for only looking 
at major releases.)

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.

So we knew all of that a year ago.  I think we know two more things now.
  1. Other compilers implement this extension too.  I didn't know that.
  2. It's possible to tame this extension, to permit assignment-to-cast 
while still not treating casts as lvalue for the purpose of overload 
resolution.

What #1 suggests to me is that immediate removal was more unfriendly 
than we'd thought, and what #2 suggests is that immediate removal 
wasn't the only option.  We can fix the overload resolution bug, keep 
the feature for the cases where people are likely to have used it, 
deprecate it in 4.0, and remove it in a later major release.

                  --Matt

  reply	other threads:[~2004-11-25 21:07 UTC|newest]

Thread overview: 116+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-11-18  3:50 generalized lvalues Matt Austern
2004-11-18  3:52 ` Andrew Pinski
2004-11-18  4:01 ` Andrew Pinski
2004-11-18  4:18   ` Daniel Berlin
2004-11-18  4:21   ` Andrew Pinski
2004-11-18  4:27     ` Matt Austern
2004-11-18  7:15       ` Joe Buck
2004-11-18  7:37         ` Matt Austern
2004-11-18 13:17           ` Giovanni Bajo
2004-11-18 17:57           ` Joe Buck
2004-11-18 18:28         ` Mike Stump
2004-11-18 18:44           ` Joe Buck
2004-11-19  1:39             ` Mike Stump
2004-11-19  4:52               ` Matt Austern
2004-11-19 22:24                 ` Michael Matz
2004-11-19 22:30                   ` Robert McNulty Junior
2004-11-20  1:00                   ` Ziemowit Laski
2004-11-20  1:20                     ` Joe Buck
2004-11-20  1:51                       ` Ziemowit Laski
2004-11-20  5:04                         ` Joe Buck
2004-11-20  5:17                           ` Ziemowit Laski
2004-11-22 20:54                             ` generalized lvalues -- patch outline Ziemowit Laski
2004-11-22 21:01                               ` Andrew Pinski
2004-11-22 21:11                                 ` Ziemowit Laski
2004-11-22 21:39                                 ` Matt Austern
2004-11-22 22:11                                   ` Joe Buck
2004-11-22 22:12                                     ` Matt Austern
2004-11-23  0:06                                       ` Gabriel Dos Reis
2004-11-23  0:04                                   ` Gabriel Dos Reis
2004-11-23  0:27                                     ` Mike Stump
2004-11-24 20:40                                     ` Kai Henningsen
2004-11-23  0:11                                   ` Mark Mitchell
2004-11-23  1:19                                     ` Matt Austern
2004-11-23  1:26                                       ` Mark Mitchell
2004-11-23  1:32                                         ` Dale Johannesen
2004-11-23  1:42                                           ` Mark Mitchell
2004-11-23  1:45                                           ` Andrew Pinski
2004-11-23  1:55                                             ` Dale Johannesen
2004-11-23  1:56                                               ` Andrew Pinski
2004-11-23  2:12                                                 ` Dale Johannesen
2004-11-23  2:10                                               ` Marcus G. Daniels
2004-11-23  9:43                                       ` Eric Botcazou
2004-11-23 18:27                                       ` Aaron W. LaFramboise
2004-11-22 21:23                               ` Nathan Sidwell
2004-11-22 22:33                                 ` Ziemowit Laski
2004-11-23  0:09                                   ` Gabriel Dos Reis
2004-11-23  9:54                                   ` Nathan Sidwell
2004-11-23 13:35                                     ` Michael Matz
2004-11-23 14:56                                       ` Daniel Berlin
2004-11-23 15:02                                         ` Michael Matz
2004-11-23 15:15                                           ` Andrew Pinski
2004-11-23 15:47                                             ` Michael Matz
2004-11-23 15:56                                               ` Gabriel Dos Reis
2004-11-23 15:50                                             ` Steve Naroff
2004-11-23 15:51                                               ` Gabriel Dos Reis
2004-11-23 16:50                                             ` Eric Botcazou
2004-11-23 17:01                                               ` Paul Koning
2004-11-23 17:16                                                 ` Andreas Schwab
2004-11-23 18:03                                                 ` Thomas Kunert
2004-11-23 18:30                                                   ` Nathan Sidwell
2004-11-23 18:57                                                     ` Thomas Kunert
2004-11-23 21:21                                                   ` Paul Koning
2004-11-23 21:52                                                     ` Thomas Kunert
2004-11-23 15:51                                           ` Gabriel Dos Reis
2004-11-23 16:12                                             ` Michael Matz
2004-11-23 16:31                                               ` Richard Guenther
2004-11-23 16:44                                               ` Andreas Schwab
2004-11-23 20:16                                               ` Gabriel Dos Reis
2004-11-23 15:01                                       ` Nathan Sidwell
2004-11-23 15:09                                         ` Michael Matz
2004-11-23 19:11                                         ` Matt Austern
2004-11-23 21:10                                           ` Eric Botcazou
2004-11-23 21:34                                     ` Ziemowit Laski
2004-11-23 22:09                                       ` Joseph S. Myers
2004-11-23 22:23                                         ` Eric Botcazou
2004-11-23 22:27                                           ` Joseph S. Myers
2004-11-24  0:05                                             ` Eric Botcazou
2004-11-24  0:07                                               ` Steven Bosscher
2004-11-24  0:32                                               ` Joseph S. Myers
2004-11-25  8:41                                                 ` Ian Lance Taylor
2004-11-25 20:41                                                   ` Gabriel Dos Reis
2004-11-25 21:54                                                     ` Matt Austern [this message]
2004-11-25 23:27                                                       ` Gabriel Dos Reis
2004-11-29 18:06                                                       ` Joe Buck
2004-11-29 18:57                                                         ` Matt Austern
2004-11-23 23:27                                         ` Gabriel Dos Reis
2004-11-23 22:24                                       ` Nathan Sidwell
2004-11-23  0:07                                 ` Gabriel Dos Reis
2004-11-24 20:43                                   ` Kai Henningsen
2004-11-24 23:09                                     ` Gabriel Dos Reis
2004-11-24 23:17                                       ` Zack Weinberg
2004-11-22 21:31                               ` Richard Henderson
2004-11-23  0:11                                 ` Gabriel Dos Reis
2004-11-23  0:03                               ` Jonathan Lennox
2004-11-20  1:40                     ` generalized lvalues Joseph S. Myers
2004-11-18 19:11           ` Alex Rosenberg
2004-11-18  4:24   ` Matt Austern
2004-11-18  5:33 ` Dale Johannesen
2004-11-18 17:14 ` Fariborz Jahanian
2004-11-18 18:23   ` Joe Buck
2004-11-19  0:20     ` Ziemowit Laski
2004-11-19  0:40       ` Steven Bosscher
2004-11-19  1:20       ` Joe Buck
2004-11-19  2:00         ` Ziemowit Laski
2004-11-18 23:36 ` Ziemowit Laski
2004-11-18 23:37   ` Matt Austern
2004-11-18 23:49     ` Zack Weinberg
2004-11-19  1:38       ` Ziemowit Laski
2004-11-19  2:52         ` Zack Weinberg
2004-11-19  3:56           ` Ziemowit Laski
2004-11-19  4:22             ` Zack Weinberg
2004-11-19 13:10         ` Nathan Sidwell
2004-11-19 21:58           ` Ziemowit Laski
2004-11-18 23:44   ` Andrew Pinski
2004-11-18 23:45   ` Joe Buck
2004-11-25  4:42 ` Aaron W. LaFramboise

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E8097517-3F25-11D9-B018-000A95BCF344@apple.com \
    --to=austern@apple.com \
    --cc=gcc@gcc.gnu.org \
    --cc=gdr@integrable-solutions.net \
    --cc=ian@wasabisystems.com \
    --cc=joseph@codesourcery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).