----- Original Message -----
From: "David Abrahams" <[EMAIL PROTECTED]>

> >> Careful; isn't the symbol "_t" reserved to the implementation in this
> > context?
> >
> > I thought it was only if the underscore was followed by a capital
letter, as
> > in "_T".
>
>     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 upper- case 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)
>
> I guess the global namespace doesn't apply to macros, huh ;-)

This is a good question.  The obvious reasoning is to protect library names
and extention keywords from macros in particular.  However, what is this:

namespace A {

struct _xyz { };

#define MACRO(id) id

MACRO(_xyz) var;

} // A

In other words, once '_xyz' goes into the macro as an argument, it *could*
be considered to be in the global scope.  However, I think that is partially
the purpose of the second half of bullet one above (i.e. '_U')--to
distinguish between macro identifiers and regular C++ identifiers.

Paul Mensonides

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to