blob: 1541d5f6a1b514174c23fc39df155176198bfc97 [file] [log] [blame]
Richard Smith4440d6e2015-07-19 23:44:27 +00001BEGIN
Richard Smith87bb5692015-06-09 00:35:49 +00002template<typename T = int> struct A {};
3template<typename T> struct B {};
4template<typename T> struct C;
5template<typename T> struct D;
Richard Smithe7bd6de2015-06-10 20:30:23 +00006template<typename T> struct E;
Richard Smith95d83952015-06-10 20:36:34 +00007template<typename T = int> struct G;
8template<typename T = int> struct H;
Richard Smith6dc8ae12015-08-17 20:24:17 +00009template<typename T> struct J {};
10template<typename T = int> struct J;
11struct K : J<> {};
Richard Smith535ff802015-09-11 22:39:35 +000012template<typename T = void> struct L;
13struct FriendL {
14 template<typename T> friend struct L;
15};
Richard Smith4440d6e2015-07-19 23:44:27 +000016END
Richard Smith2195ec92017-04-21 01:15:13 +000017
18namespace 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}