1 // Merge success 2 namespace N1 { 3 extern int x0; 4 } 5 6 // Merge multiple namespaces 7 namespace N2 { 8 extern int x; 9 } 10 namespace N2 { 11 extern float y; 12 } 13 14 // Merge namespace with conflict 15 namespace N3 { 16 extern double z; 17 } 18 19 namespace Enclosing { 20 namespace Nested { 21 const int z = 4; 22 } 23 } 24 25 namespace ContainsInline { 26 inline namespace Inline { 27 const int z = 10; 28 } 29 } 30 31 namespace TestAliasName = Enclosing::Nested; 32 // NOTE: There is no warning on this alias. 33 namespace AliasWithSameName = Enclosing::Nested; 34 35 namespace TestUsingDecls { 36 37 namespace A { 38 void foo(); 39 } 40 namespace B { 41 using A::foo; // <- a UsingDecl creating a UsingShadow 42 } 43 44 }// end namespace TestUsingDecls 45 46 namespace TestUnresolvedTypenameAndValueDecls { 47 48 template <class T> class Base; 49 template <class T> class Derived : public Base<T> { 50 public: 51 using typename Base<T>::foo; 52 using Base<T>::bar; 53 typedef typename Derived::foo NewUnresolvedUsingType; 54 }; 55 56 } // end namespace TestUnresolvedTypenameAndValueDecls 57 58 namespace TestUsingNamespace { 59 using namespace Enclosing; 60 } 61