// RUN: %clang_cc1 -fsyntax-only -verify %s | |
template<class X> struct A {}; | |
template<class X> struct B : A<X> { | |
B() : A<X>() {} | |
}; | |
B<int> x; | |
template<class X> struct B1 : A<X> { | |
typedef A<X> Base; | |
B1() : Base() {} | |
}; | |
B1<int> x1; | |
template<typename T> struct Tmpl { }; | |
template<typename T> struct TmplB { }; | |
struct TmplC : Tmpl<int> { | |
TmplC() : | |
Tmpl<int>(), | |
TmplB<int>() { } // expected-error {{type 'TmplB<int>' is not a direct or virtual base of 'TmplC'}} | |
}; | |
struct TmplD : Tmpl<char>, TmplB<char> { | |
TmplD(): | |
Tmpl<int>(), // expected-error {{type 'Tmpl<int>' is not a direct or virtual base of 'TmplD'}} | |
TmplB<char>() {} | |
}; | |