Home | History | Annotate | Download | only in Inputs
      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