Home | History | Annotate | Download | only in SemaTemplate
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s
      2 
      3 // PR4381
      4 template<class T> struct X {};
      5 template<typename T> struct Y : public X<T>::X { };
      6 
      7 // PR4621
      8 class A1 {
      9   A1(int x) {}
     10 };
     11 template<class C> class B1 : public A1 {
     12   B1(C x) : A1(x.x) {}
     13 };
     14 class A2 { A2(int x, int y); };
     15 template <class C> class B2 {
     16   A2 x;
     17   B2(C x) : x(x.x, x.y) {}
     18 };
     19 template <class C> class B3 {
     20   C x;
     21   B3() : x(1,2) {}
     22 };
     23 
     24 // PR4627
     25 template<typename _Container> class insert_iterator {
     26     _Container* container;
     27     insert_iterator(_Container& __x) : container(&__x) {}
     28 };
     29 
     30 // PR4763
     31 template<typename T> struct s0 {};
     32 template<typename T> struct s0_traits {};
     33 template<typename T> struct s1 : s0<typename s0_traits<T>::t0> {
     34   s1() {}
     35 };
     36 
     37 // PR6062
     38 namespace PR6062 {
     39   template <typename T>
     40   class A : public T::type
     41   {
     42     A() : T::type()
     43     {
     44     }
     45 
     46     template <typename U>
     47     A(U const& init)
     48       : T::type(init)
     49     { }
     50 
     51     template<typename U>
     52     A(U& init) : U::other_type(init) { }
     53   };
     54 }
     55 
     56 template<typename T, typename U>
     57 struct X0 : T::template apply<U> {
     58   X0(int i) : T::template apply<U>(i) { }
     59 };
     60 
     61 // PR7698
     62 namespace PR7698 {
     63   template<typename Type>
     64   class A {
     65     char mA[sizeof(Type *)];
     66     A(): mA() {}
     67   };
     68 }
     69