1 | // RUN: %clang_cc1 -fsyntax-only -Wall -verify %s |
2 | // expected-no-diagnostics |
3 | template<typename a> struct A { |
4 | template <typename b> struct B { |
5 | template <typename c> struct C { |
6 | template <typename d> struct D { |
7 | template <typename e> struct E { |
8 | e field; |
9 | E() : field(0) { |
10 | d v1 = 4; |
11 | c v2 = v1 * v1; |
12 | b v3 = 8; |
13 | a v4 = v3 * v3; |
14 | field += v2 + v4; |
15 | } |
16 | }; |
17 | }; |
18 | }; |
19 | }; |
20 | }; |
21 | |
22 | A<int>::B<int>::C<int>::D<int>::E<int> global; |
23 | |
24 | // PR5352 |
25 | template <typename T> |
26 | class Foo { |
27 | public: |
28 | Foo() {} |
29 | |
30 | struct Bar { |
31 | T value; |
32 | }; |
33 | |
34 | Bar u; |
35 | }; |
36 | |
37 | template class Foo<int>; |
38 | |