compositie van Namespace gebruiken
Best practice in programming suggereert het sequesteren van nieuwe gegevens of functionaliteit in een sanely-namespace, unieke namespace indien mogelijk. Dit wordt beschouwd als een voordeel ten opzichte van het dumpen van alles inde globale namespace, als Dan naam opzoeken kan expliciet worden ingeschakeld ordisabled zoals hierboven, symbolen worden consequent verminkt zonder herhalingen naam voorvoegsels of macro ‘ s, enz.
overweeg bijvoorbeeld een project dat de meeste klassen in namespace gtk
definieert. Het is mogelijk om namespace gtk
aan namespace std
aan te passen met behulp van een c++-functie genaamd namespace composition. Dit is wat er gebeurt als een using-declaration in een amespace-definitie wordt gezet: het geïmporteerde symbool(s) wordt geïmporteerd in de huidige actieve namespace(s). Bijvoorbeeld::
namespace gtk{ using std::string; using std::tr1::array; class Window { ... };}
in dit voorbeeld wordt std::string
geïmporteerd innamespace gtk
. Het resultaat is dat het gebruik vanstd::string
in naamruimte gtk gewoon string
kan gebruiken, zonder de expliciete qualification.As een toegevoegde bonus,std::string
wordt niet geïmporteerd in de Globale naamruimte. Daarnaast kan een uitgebreidere regeling worden getroffen voor backwards compatibility en portability, waarbij deusing
-declaraties kunnen worden verpakt in Macro ‘ s die zijn ingesteld op basis van autoconf-tests op “” of dus using std::string;
(afhankelijk van of het systeem haslibstdc++ in std::
of niet). (ideeën van lewelly en Karl Nelson)