1 /* -*- C++ -*- */ 2 namespace DebugCXX { 3 // Records. 4 struct Struct { 5 int i; 6 static int static_member; 7 }; 8 9 // Enums. 10 enum Enum { 11 Enumerator 12 }; 13 enum { 14 e1 = '1' 15 }; 16 enum { 17 e2 = '2' 18 }; 19 20 // Templates (instatiations). 21 template<typename T> struct traits {}; 22 template<typename T, 23 typename Traits = traits<T> 24 > class Template { 25 T member; 26 }; 27 extern template class Template<int>; 28 29 extern template struct traits<float>; 30 typedef class Template<float> FloatInstatiation; 31 32 inline void fn() { 33 Template<long> invisible; 34 } 35 36 // Non-template inside a template. 37 template <class> struct Outer { 38 Outer(); 39 struct Inner { 40 Inner(Outer) {} 41 }; 42 }; 43 template <class T> Outer<T>::Outer() { 44 Inner a(*this); 45 }; 46 47 // Partial template specialization. 48 template <typename...> class A; 49 template <typename T> class A<T> {}; 50 typedef A<void> B; 51 void foo(B) {} 52 } 53