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