class A;

class A {
public:
   int i;
   char c;
   static int my_static_int;

   int f () { return 0; }
};

static int A::my_static_int = 0;

typedef A  My_Class;


My_Class a;


typedef struct {
   My_Class mc;
   A   field_a;
} BB;

BB ms;

template <class T = int>
class CCC {
   T t;
   const int i;
   int& r;

   struct nested_struct {
      int i;
   };

   nested_struct ns;

   int fff() { return 0; }
};

CCC<int> c;


template <int n>
int tf () { return n; }

int main () {
   A a;
   cc.fff();
   c.fff();
   tf<1> ();
   return a.f ();
}
