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>;
 |