Ross Ridge wrote:
> >Well, maybe I'm missing something, but it never converts input characters
> >to UCNs so that means it doesn't do (A) or (B), and the only thing it
> >converts to wide characters are wide string literals, so it doesn't do
> >(C).

On Thu, Sep 15, 2005 at 07:24:47AM -0400, Robert Dewar wrote:
> You are thinking operationally, when you should think semantically.
> Remember that as-if applies here. The rules as stated give ways to
> achieve certain effects, the question is not whether we are following
> the operational rules, but whether we are following the effects.

This was exactly my point when I asked for an example.  Joseph Myers
pointed to some, in the discussion for PR 9449 (particularly comment #39).

The examples, however, are obscure enough that users might prefer having
a few corner-case bugs to a rigorously correct, but slower,
implementation.  For example, if the cost of correctly handling

#define foo \u00b1
#define foo \u00B1   /* invalid: different spelling in replacement */
#define \u00c1 foo
#define \u00C1 foo   /* valid: spelling of macro *name* can vary */

is a 10% slowdown in preprocessor speed, I'd rather leave it broken
and document the breakage.  On the other hand, if a correct implementation
of these rules does not impose a speed penalty, wonderful.

It is truly annoying that the C and C++ committees created different
rules, BTW.





Reply via email to