xref: /llvm-project/clang/test/ASTMerge/class-template/Inputs/class-template2.cpp (revision 0333dd95636da52229ca14b4e5525c1cd8ba62d2)
1*0333dd95SReid Kleckner template<class T>
2*0333dd95SReid Kleckner struct X0 {
3*0333dd95SReid Kleckner   T getValue(T arg);
4*0333dd95SReid Kleckner };
5*0333dd95SReid Kleckner 
6*0333dd95SReid Kleckner template<int I>
7*0333dd95SReid Kleckner struct X1;
8*0333dd95SReid Kleckner 
9*0333dd95SReid Kleckner template<long I>
10*0333dd95SReid Kleckner struct X2;
11*0333dd95SReid Kleckner 
12*0333dd95SReid Kleckner template<typename>
13*0333dd95SReid Kleckner struct X3;
14*0333dd95SReid Kleckner 
15*0333dd95SReid Kleckner template<template<int I> class>
16*0333dd95SReid Kleckner struct X4;
17*0333dd95SReid Kleckner 
18*0333dd95SReid Kleckner template<template<int I> class>
19*0333dd95SReid Kleckner struct X5;
20*0333dd95SReid Kleckner 
21*0333dd95SReid Kleckner template<template<int I> class>
22*0333dd95SReid Kleckner struct X6;
23*0333dd95SReid Kleckner 
24*0333dd95SReid Kleckner typedef int Integer;
25*0333dd95SReid Kleckner extern X0<Integer> *x0i;
26*0333dd95SReid Kleckner extern X0<float> *x0f;
27*0333dd95SReid Kleckner extern X0<double> *x0r;
28*0333dd95SReid Kleckner 
29*0333dd95SReid Kleckner template<>
30*0333dd95SReid Kleckner struct X0<char> {
31*0333dd95SReid Kleckner   int member;
32*0333dd95SReid Kleckner };
33*0333dd95SReid Kleckner 
34*0333dd95SReid Kleckner template<>
35*0333dd95SReid Kleckner struct X0<wchar_t> {
36*0333dd95SReid Kleckner   float member;
37*0333dd95SReid Kleckner };
38