blob: a278e79f912333d7952bcc28aa399ab5f486c6d1 [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Andy Gibbs8e8fb3b2012-10-19 12:44:48 +00002// expected-no-diagnostics
Eli Friedman59c04372009-07-29 19:44:27 +00003
Douglas Gregor42c39f32009-08-26 18:27:52 +00004// PR4381
5template<class T> struct X {};
6template<typename T> struct Y : public X<T>::X { };
7
Eli Friedman59c04372009-07-29 19:44:27 +00008// 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
Fariborz Jahanian77a2b4f2009-08-24 17:19:23 +000031// 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
Douglas Gregor7a886e12010-01-19 06:46:48 +000038// 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}
Douglas Gregore8aba3d2010-01-19 06:47:24 +000056
57template<typename T, typename U>
58struct X0 : T::template apply<U> {
59 X0(int i) : T::template apply<U>(i) { }
60};
Eli Friedman0f2b97d2010-07-24 21:19:15 +000061
62// PR7698
63namespace PR7698 {
64 template<typename Type>
65 class A {
66 char mA[sizeof(Type *)];
67 A(): mA() {}
68 };
69}