xref: /llvm-project/clang/test/ASTMerge/class-template/Inputs/class-template1.cpp (revision 0333dd95636da52229ca14b4e5525c1cd8ba62d2)
1*0333dd95SReid Kleckner template<typename T>
2*0333dd95SReid Kleckner struct X0 {
getValueX03*0333dd95SReid Kleckner   T getValue(T arg) { return 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<int I>
10*0333dd95SReid Kleckner struct X2;
11*0333dd95SReid Kleckner 
12*0333dd95SReid Kleckner template<int I>
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<long> class>
19*0333dd95SReid Kleckner struct X5;
20*0333dd95SReid Kleckner 
21*0333dd95SReid Kleckner template<typename>
22*0333dd95SReid Kleckner struct X6;
23*0333dd95SReid Kleckner 
24*0333dd95SReid Kleckner extern X0<int> *x0i;
25*0333dd95SReid Kleckner extern X0<long> *x0l;
26*0333dd95SReid Kleckner extern X0<float> *x0r;
27*0333dd95SReid Kleckner 
28*0333dd95SReid Kleckner template<>
29*0333dd95SReid Kleckner struct X0<char> {
30*0333dd95SReid Kleckner   int member;
getValueX031*0333dd95SReid Kleckner   char getValue(char ch) { return static_cast<char>(member); }
32*0333dd95SReid Kleckner };
33*0333dd95SReid Kleckner 
34*0333dd95SReid Kleckner template<>
35*0333dd95SReid Kleckner struct X0<wchar_t> {
36*0333dd95SReid Kleckner   int member;
37*0333dd95SReid Kleckner };
38