ネーム・スペースおよび多重定義 (C++ のみ)

複数のネーム・スペースにまたがって関数を多重定義することができます。以下に例を示します。
// Original X.h:
int f(int);

// Original Y.h:
int f(char);

// Original program.c:
#include "X.h"
#include "Y.h"

int main(){
  f('a');   // calls f(char) from Y.h
}

ソース・コードを大幅に変更することなく、名前空間を上記の例に導入できます。

// New X.h:
namespace X {
  f(int);
}

// New Y.h:
namespace Y {
  f(char);
}

// New program.c:
#include "X.h"
#include "Y.h"

using namespace X;
using namespace Y;

int main(){
  f('a');   // calls f() from Y.h
}

program.c で、main 関数は、名前空間 Y のメンバーである関数 f() を呼び出します。 using ディレクティブをヘッダー・ファイルに入れると、program.c のソース・コードは、変更されないままになります。