[C++] Patch c++/15049

Matt Austern austern@apple.com
Fri Sep 17 18:47:00 GMT 2004


On Sep 17, 2004, at 10:43 AM, Paolo Carlini wrote:

> Matt Austern wrote:
>
>> If the proposed resolution of DR389 is accepted (which it probably 
>> will be; that's what status "ready" means), then this example will be 
>> illegal.  So the status right now, in my opinion, is that this code 
>> is legal in the current version of C++ (the 1998 standard plus the 
>> 2003 technical corrigendum) but that it will probably be illegal in 
>> the next version of C++ ("C++0x").
>
> Thanks for the clarification: indeed, this matches my reading of the 
> audit trail + references therein.
>
>> To some extent this is a bureaucratic issue, not a technical one.  At 
>> the moment we've got two version of the standard, "C++98" and 
>> "C++03".  Defect reports aren't part of either standard.  We can use 
>> defect reports to try to figure out the intent of the committee if we 
>> believe that the current standard is ambiguous or if it just leaves 
>> something out, but that's not the case here.  My interpretation is 
>> that CWG issue 389 is proposing a change.
>
> Interesting... You know, in the library often we consider the "Ready" 
> resolutions as part of the standard that we are actually implementing: 
> probably, we (I, in the first place, to be clear!) don't tell very 
> accurately resolutions about ambiguities from resolutions about 
> changes... Hummm...

I hadn't noticed that!  Every place I'd noticed reference to DRs, I'd 
been impressed by how scrupulous people were about distinguishing 
between what the standard says and what the issue lists had.

My advice on what our policy should be (and again, this is what I 
though our policy was):
  - We should conform as closely as possible to C++-03.  We shouldn't 
attempt to have C++98 and C++03 as separate modes.
  - If an issue has status "WP" (not "Ready", which is a a lesser 
status), then in some cases we should consider incorporating it.  In 
some cases it should be unconditional (if it's strictly upward 
compatible with C++03 and if it's important), otherwise it should be 
conditionalized by a flag or macro.
  - If we genuinely can't do what the standard says (if the standard is 
contradictory or unimplementable, or if it's ambiguous and we don't 
know what the correct interpretation is) then we can use informal means 
to figure out what to do instead.  But we should always put in comments 
to make it clear that that's what we're doing.

				--Matt



More information about the Gcc-patches mailing list