template<class T>
struct X0 {
T getValue(T arg);
};
template<int I>
struct X1;
template<long I>
struct X2;
template<typename>
struct X3;
template<template<int I> class>
struct X4;
template<template<int I> class>
struct X5;
template<template<int I> class>
struct X6;
typedef int Integer;
extern X0<Integer> *x0i;
extern X0<float> *x0f;
extern X0<double> *x0r;
template<>
struct X0<char> {
int member;
};
template<>
struct X0<wchar_t> {
float member;
};