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