forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			56 lines
		
	
	
		
			982 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			982 B
		
	
	
	
		
			C++
		
	
	
	
| // 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>() {}
 | |
| };
 | |
| 
 | |
| namespace PR7259 {
 | |
|   class Base {
 | |
|   public:
 | |
|     Base() {}
 | |
|   };
 | |
| 
 | |
|   template <class ParentClass>
 | |
|   class Derived : public ParentClass {
 | |
|   public:
 | |
|     Derived() : Base() {}
 | |
|   };
 | |
| 
 | |
|   class Final : public Derived<Base> {
 | |
|   };
 | |
| 
 | |
|   int
 | |
|   main (void)
 | |
|   {
 | |
|     Final final();
 | |
|     return 0;
 | |
|   }
 | |
| }
 |