namespace2.cpp 1.0 KB

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