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