xref: /llvm-project/clang/test/Modules/Inputs/template-default-args/a.h (revision 2195ec9ad4ba7dc363762e3aaf7af93085cb30e1)
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;
f()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