名前空間構成の使用
プログラミングにおけるベストプラクティスは、新しいデータを隔離することや、可能なときにsanelyという名前の一意の名前空間で機能することを示唆しています。 これは、グローバル名前空間内のすべてをダンプする上での利点と考えられています,その後、名前のルックアップは、上記のように明示的に有効にしたり、
たとえば、namespace gtk
でそのクラスのほとんどを定義するプロジェクトを考えてみましょう。 名前空間合成と呼ばれるC++機能を使用して、namespace gtk
をnamespace std
に追加することができます。 これは、using-declarationがanamespace-definitionに入れられた場合に起こることです:インポートされたシンボルは、現在アクティブな名前空間にインポートされます。 例えば:
namespace gtk{ using std::string; using std::tr1::array; class Window { ... };}
この例では、std::string
はnamespace gtk
にインポートされます。 その結果、名前空間gtk内でstd::string
を使用すると、明示的にstring
を使用することができますqualification.As 追加されたボーナス、std::string
はグローバル名前空間にインポートされません。 さらに、下位互換性と移植性のために、using
宣言はautoconfテストに基づいて””またはusing std::string;
のいずれかに設定されたマクロでラップすることができます(システムがstd::
でlibstdc++を使用しているかどうかに応じて)。 (カール-ネルソンのアイデア)