名前空間に名前をつけない事も可能です。
名前なしの名前空間内に宣言された変数や関数は、
static属性がついたものと同様のモノとして動作します。
つまり、グローバル変数、関数にstatic属性がついただけ。
と考える事ができます。
#include <iostream>
using namespace std;
namespace {
int a; // static int a;と同じ意味
void show(void); // static void show(void);と同じ意味
}
void main(void) {
cout << "a=" << a << '\n';
show();
}
静的なグローバル変数、静的なグローバル関数を使う場合に
C言語機能のstatic付き変数、関数を使うか、
この無名の名前空間機能を使うかは好みで決めていいと思います。
C++が使える環境においては、
無名の名前空間機能を使うように推奨されているようです。