/* -*- C++ -*- */ namespace DebugCXX { // Records. struct Struct { int i; static int static_member; }; // Enums. enum Enum { Enumerator }; enum { e1 = '1' }; enum { e2 = '2' }; // Templates (instatiations). template struct traits {}; template > class Template { T member; }; extern template class Template; extern template struct traits; typedef class Template FloatInstatiation; inline void fn() { Template invisible; } // Non-template inside a template. template struct Outer { Outer(); struct Inner { Inner(Outer) {} }; }; template Outer::Outer() { Inner a(*this); }; // Partial template specialization. template class A; template class A {}; typedef A B; void foo(B) {} }