Utilizzo della composizione dello spazio dei nomi
Le migliori pratiche nella programmazione suggeriscono di sequestrare nuovi dati o funzionalità in uno spazio dei nomi univoco e con un nome sano quando possibile. Questo è considerato un vantaggio rispetto al dumping di tutto nello spazio dei nomi globale, poiché la ricerca del nome può essere abilitata esplicitamente o abilitata come sopra, i simboli sono costantemente storpiati senza prefissi o macro ripetitivi, ecc.
Ad esempio, si consideri un progetto che definisce la maggior parte delle sue classi in namespace gtk. È possibile adattare namespace gtk a namespace std utilizzando una composizione C++-feature callednamespace. Questo è ciò che accade se una dichiarazione di utilizzo viene inserita in una definizione di spazio-spazio: i simboli importati vengono importati nello spazio dei nomi attualmente attivo. Ad esempio:
namespace gtk{ using std::string; using std::tr1::array; class Window { ... };}
In questo esempio, std::string viene importato innamespace gtk. Il risultato è che l’uso di std::string all’interno dello spazio dei nomi gtk può semplicemente usare string, senza l’esplicito qualification.As un ulteriore vantaggio,std::string non viene importato nello spazio dei nomi globale. Inoltre, una disposizione più elaborata può essere fatta per la retrocompatibilità e la portabilità, per cui le dichiarazioni using-possono essere racchiuse in macro impostate in base a autoconf-test su “” o cioè using std::string; (a seconda che il sistema haslibstdc++ in std:: o meno). (idee Fromlewelly e Karl Nelson)