Jonathan Turkanis wrote in news:bvf3rp$rl73d$1@ID-216073.news.uni-
berlin.de:
[color=blue]
>
> "Rob Williscroft" <rtw@freenet.REMOVE.co.uk> wrote in message:
>[color=green][color=darkred]
>> >> This would be the same as reserved ... everywhere. The "must be
>> > global"
>> >> would be unnessasery additional info'.
>> >>
>> >
>> > Unnecessary info for users, maybe, but not for implementers.[/color]
>>
>> How would it help an implementer, the standard tells implementors
>> what they have to implement not *how*, "must be global" could
>> only be related to how.
>>[/color]
>
> Did I say 'helpful'? I said 'necessary': if (i) is correct, then it
> constitutes necessary information for implementers.[/color]
My apologees, I should have consulted the standard when you first said:
[color=blue]
>
> I'm familiar with the language from the standard, but it sounds a bit
> ambiguous:
>
> "reserved to the implementation for use as a name in the global
> namespace"
>
> could mean:
>
> (i) reserved to the implementation; also, must be global,
>[/color]
This section (17.4.3) is describing constraints on programmes.
However your rewording with hindsight appears to be as if your reading
the section as constraining implementation's.
[color=blue]
>[color=green][color=darkred]
>> >
>> > Maybe you mean it would be an 'unneccessary additional[/color][/color]
> restriction'?[color=green]
>>
>> It isn't a restriction, its saying that _lowercase *must* be a[/color]
> global[color=green]
>> namespace identifier, i.e. its telling an implementor some details
>> about *how* to implement.
>>[/color]
>
> What distinction are you trying to make? I don't see how a requirement
> that such identifiers -- if used by an implementation -- must be
> global, isn't a restriction.[/color]
Indeed, implementors arn't allowed to use _lowercase identifiers
other than in the global namespace (or in std).
I interpreted you originaly as suggesting *nobody* could use such
identifiers other than in the global namespace and only
implementors can use them there.
[color=blue]
> True, the standard tries to give
> implementers broad discretion, yet it also puts quite a few
> constraints on implementations.
>
> Maybe you should try to find some evidence in favor of your
> interpretation. I never said it was wrong, by the way. I just asked
> you to support it.
>[/color]
There is only one peice evidence available, I presume since you
quoted from it, that you've read it. It helps if you read the all
of "17.4.3 Constraints on programs", here's the relevent quote:
17.4.3.1.2 Global names
1 Certain sets of names and function signatures are always reserved to
the implementation:
— Each name that contains a double underscore (_ _) or begins with
an underscore followed by an uppercase letter (2.11) is reserved
to the implementation for any use.
— Each name that begins with an underscore is reserved to the
implementation for use as a name in the global namespace.165)
165) Such names are also reserved in namespace ::std (17.4.3.1).
The second bullet is clearly saying that implementation's can use
identifiers such as _lowercase at in the global namespace so
a conforming programme may not.
The note 165) tells us we can't put such identifiers in namespace std
but we can't do that anyway.
Rob.
--
http://www.victim-prime.dsl.pipex.com/