Home | History | Annotate | Download | only in class.nest
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s
      2 // expected-no-diagnostics
      3 
      4 // C++0x [class.nest] p3:
      5 //   If class X is defined in a namespace scope, a nested class Y may be
      6 //   declared in class X and later defined in the definition of class X or be
      7 //   later defined in a namespace scope enclosing the definition of class X.
      8 
      9 namespace example {
     10   class E {
     11     class I1;
     12     class I2;
     13     class I1 { };
     14   };
     15   class E::I2 { };
     16 }
     17 
     18 // Don't insert out-of-line inner class definitions into the namespace scope.
     19 namespace PR6107 {
     20   struct S1 { };
     21   struct S2 {
     22     struct S1;
     23   };
     24   struct S2::S1 { };
     25   S1 s1;
     26 }
     27