1 | BEGIN |
2 | template<typename T = int> struct A {}; |
3 | template<typename T> struct B {}; |
4 | template<typename T> struct C; |
5 | template<typename T> struct D; |
6 | template<typename T> struct E; |
7 | template<typename T = int> struct G; |
8 | template<typename T = int> struct H; |
9 | template<typename T> struct J {}; |
10 | template<typename T = int> struct J; |
11 | struct K : J<> {}; |
12 | template<typename T = void> struct L; |
13 | struct FriendL { |
14 | template<typename T> friend struct L; |
15 | }; |
16 | END |
17 | |
18 | namespace DeferredLookup { |
19 | template<typename T, typename U = T> using X = U; |
20 | template<typename T> void f() { (void) X<T>(); } |
21 | template<typename T> int n = X<T>(); |
22 | template<typename T> struct S { X<T> xt; enum E : int; }; |
23 | template<typename T> enum S<T>::E : int { a = X<T>() }; |
24 | |
25 | namespace Indirect { |
26 | template<typename, bool = true> struct A {}; |
27 | template<typename> struct B { template<typename T> using C = A<T>; }; |
28 | } |
29 | } |
30 | |