名前を付けないでネームスペースを指定するとそれは無名ネームスペースとなり、そのファイルの中でのみ有効となる。
次のように二つのファイルをコンパイルしてリンクする場合。list1.cppで宣言された無名ネームスペースのiはlist2.cppでexternで参照しようとしているがリンク時にエラーとなる。staticと同じような感じだろう。
list1.cpp
namespace { int i; } void func1() { cout << i; }
list2.cpp
extern int i; void func2() { cout << i; // エラー。リンクに失敗する。 }