How to Re-open a Nested Namespace

How to Re-open a Nested Namespace

As strange as it may seem, C++ doesn’t allow you to re-open a namespace using a qualified name; you can re-open it only by using its nested name. For example, the following program defines a namespace called A that has two embedded namespaces, B and C. The attempt to re-open A::B with a qualified name and add the member d to it fails to compile. By contrast, the addition of a the member e to the same namespace succeeds because in this case the programmer used nested namespaces:

 namespace A{ namespace B {  int a; } int b; namespace C {  int c; }}namespace A::B // attempt to re-open using a qualified name{ int d; // this won't compile}namespace A // re-opening namespace B in A{ namespace B {  int e; // fine, add a new member to namespace B in A }}int main(){ A::B::a = 1; A::b = 2; A::C::c = 3; A::B::d = 4; // won't compile A::B::e = 5;}


Share the Post: