A separate namespace for implementation functions?

Gabriel Dos Reis Gabriel.Dos-Reis@cmla.ens-cachan.fr
Mon Jul 9 11:17:00 GMT 2001


"Stephen M. Webb" <stephen@bregmasoft.com> writes:

| I've been grooming some of the header files to remove unneeded functions
| (usually leftover workarounds for compilers that don't support partial
| specialization).  This still leaves a whole slew of auxiliary support functions,
| especially for the implementation of Algorithms.  Most of the time, these
| auxiliary support functions have uglified names so there are no name
| conflicts with userspace names, but the language itself provides a
| mechanism to do this.

The uglification question has nothing to do with namespace -- there
already have been some discussions on that topic.  Macros for example
don't respect scopes.

| My question-of-the-day is this.  Should these auxiliary functions be put
| in a separate namespace (say, std::impl)?

There is no need to.

|  The advantages are that their
| use is a little clearer and someone is less likely to assume they can use
| such a function

Oh, anyone using an identifier of the form _[A-Z_].* knows that he/she
makes non-portabitlity assumptions.


| (they might use std::__copy_aux since it's obviously a
| standard function,

That is unlikely.

| but maybe hesitate at std::impl::__copy_aux).

We're not allowed to use std::impl. The identifier 'impl' is in the
user-namespace. 

|  The only
| real disadvantage is that code must be touched.

For no gain.

| The isues to be addressed include:
| 
| Should this even be done?

I think no.

For extentions, we have __gnu_cxx.

-- Gaby



More information about the Libstdc++ mailing list