• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 
3 template<class X> struct A {};
4 
5 template<class X> struct B : A<X> {
BB6   B() : A<X>() {}
7 };
8 B<int> x;
9 
10 template<class X> struct B1 : A<X> {
11   typedef A<X> Base;
B1B112   B1() : Base() {}
13 };
14 B1<int> x1;
15 
16 
17 template<typename T> struct Tmpl { };
18 
19 template<typename T> struct TmplB { };
20 
21 struct TmplC : Tmpl<int> {
TmplCTmplC22    TmplC() :
23              Tmpl<int>(),
24              TmplB<int>() { } // expected-error {{type 'TmplB<int>' is not a direct or virtual base of 'TmplC'}}
25 };
26 
27 
28 struct TmplD : Tmpl<char>, TmplB<char> {
TmplDTmplD29     TmplD():
30             Tmpl<int>(), // expected-error {{type 'Tmpl<int>' is not a direct or virtual base of 'TmplD'}}
31             TmplB<char>() {}
32 };
33 
34 namespace PR7259 {
35   class Base {
36   public:
Base()37     Base() {}
38   };
39 
40   template <class ParentClass>
41   class Derived : public ParentClass {
42   public:
Derived()43     Derived() : Base() {}
44   };
45 
46   class Final : public Derived<Base> {
47   };
48 
49   int
main(void)50   main (void)
51   {
52     Final final;
53     return 0;
54   }
55 }
56