the no-export namespace name

Benjamin Kosnik bkoz@redhat.com
Wed Jan 28 07:35:00 GMT 2004


Currently, extensions and implementation details are being put into
namespace __gnu_cxx.

I'm suggesting this should change.

I think __gnu_cxx is fine for the extensions. Not changing this will be
easiest for everybody, and will mean no changes to docs or interfaces.

I'm suggesting

__gnu_private
__gnu_cxx_private
__gnu_internal
__gnu_hidden

The other namespaces in use at the moment are:

std
std::rel_ops
__gnu_cxx
__gnu_cxx::demangler
__gnu_norm
__gnu_debug
__gnu_debug_def

For things like src/globals_io.cc and src/globals_locale.cc, etc. (Quick
recap: we do this so that things in implementation namespaces are not
exported by default. It may sound strange but it's a big help in making
symbol versioning comprehensible. Or, more comprehensible.)

Thoughts? Suggestions? I'm leaning toward __gnu_internal or __gnu_hidden
(a la the visibility attribute).

-benjamin



More information about the Libstdc++ mailing list