Obszary nazw bez nazwy
Bez nazwy obszaru nazw można zadeklarować superior alternatywne w stosunku do użytku globalnego deklaracji zmiennej statycznej.
namespace { declaration-list }
Uwagi
Definicję nazwy obszaru nazw, posiadające pokazaną wyżej składnią zachowuje się tak, jakby zostały zastąpione przez:
namespace unique { declaration-list }
za pomocą obszaru nazw unikatowy;
Każdej nazwy obszaru nazw ma identyfikator przypisany i utrzymane przez program i reprezentowana przez unikatowy, który różni się od innych identyfikatorów w całym programie.Na przykład:
// unnamed_namespaces.cpp
// C2872 expected
namespace { int i; } // unique::i
void f() { i++; } // unique::i++
namespace A {
namespace {
int i; // A::unique::i
int j; // A::unique::j
}
}
using namespace A;
void h()
{
i++; // C2872: unique::i or A::unique::i
A::i++; // A::unique::i++
j++; // A::unique::j++
}
Nienazwane obszary nazw są najwyższej zastępujące statyczne deklaracji zmiennych.Pozwalają one zmienne i funkcje być widoczne w jednostce tłumaczenie całego jeszcze nie widocznych zewnętrznie.Mimo, że podmioty w obszarze nazw nienazwane może mieć powiązania zewnętrznych, są skutecznie kwalifikowana nazwa unikatowa do ich tłumaczenie jednostki i dlatego nigdy nie wynika z innych jednostek tłumaczenia.