Richard Smith | 4440d6e | 2015-07-19 23:44:27 +0000 | [diff] [blame] | 1 | BEGIN |
Richard Smith | 87bb569 | 2015-06-09 00:35:49 +0000 | [diff] [blame] | 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; |
Richard Smith | e7bd6de | 2015-06-10 20:30:23 +0000 | [diff] [blame] | 6 | template<typename T> struct E; |
Richard Smith | 95d8395 | 2015-06-10 20:36:34 +0000 | [diff] [blame] | 7 | template<typename T = int> struct G; |
| 8 | template<typename T = int> struct H; |
Richard Smith | 6dc8ae1 | 2015-08-17 20:24:17 +0000 | [diff] [blame] | 9 | template<typename T> struct J {}; |
| 10 | template<typename T = int> struct J; |
| 11 | struct K : J<> {}; |
Richard Smith | 535ff80 | 2015-09-11 22:39:35 +0000 | [diff] [blame] | 12 | template<typename T = void> struct L; |
| 13 | struct FriendL { |
| 14 | template<typename T> friend struct L; |
| 15 | }; |
Richard Smith | 4440d6e | 2015-07-19 23:44:27 +0000 | [diff] [blame] | 16 | END |
Richard Smith | 2195ec9 | 2017-04-21 01:15:13 +0000 | [diff] [blame^] | 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 | } |