template struct X0 { T getValue(T arg) { return arg; } }; template struct X1; template struct X2; template struct X3; template class> struct X4; template class> struct X5; template struct X6; extern X0 *x0i; extern X0 *x0l; extern X0 *x0r; template<> struct X0 { int member; char getValue(char ch) { return static_cast(member); } }; template<> struct X0 { int member; };