template <class T>
void f(T) {}
template <class T>
struct S {
static T t;
};
template <class T>
T S<T>::t;
template void f(int);
template void f(int); template int S<int>::t;
template int S<int>::t; template class S<double>;
template class S<double>;
extern template void f(double); inline template class S<float>;
template <class T>
struct S<T*> {};
template class S<void*>;
template <>
struct S<long double> {};
template class S<long double>;
template <>
void f(long double) {}
template void f(long double);
template <class T>
void g(T);
template void g(int);