forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			37 lines
		
	
	
		
			646 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			646 B
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -Wall -verify %s
 | |
| template<typename a> struct A {
 | |
|   template <typename b> struct B {
 | |
|     template <typename c> struct C {
 | |
|       template <typename d> struct D {
 | |
|         template <typename e> struct E {
 | |
|           e field;
 | |
|           E() : field(0) {
 | |
|             d v1 = 4;
 | |
|             c v2 = v1 * v1;
 | |
|             b v3 = 8;
 | |
|             a v4 = v3 * v3;
 | |
|             field += v2 + v4;
 | |
|           }
 | |
|         };
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| };
 | |
| 
 | |
| A<int>::B<int>::C<int>::D<int>::E<int> global;
 | |
| 
 | |
| // PR5352
 | |
| template <typename T>
 | |
| class Foo {
 | |
| public:
 | |
|   Foo() {}
 | |
|   
 | |
|   struct Bar {
 | |
|     T value;
 | |
|   };
 | |
|   
 | |
|   Bar u;
 | |
| };
 | |
| 
 | |
| template class Foo<int>;
 |