// { dg-do run  }
extern "C" void abort();

template <class T>
struct S1
{
  static void f();
};

template <>
void S1<int>::f() {}

struct S2
{
  template <class T>
  static void g(T);
};

template <>
void S2::g(double) {}

template <>
void S2::g<int>(int) {}

template <class T>
struct S3
{
  template <class U>
  static int h(U);
};

template <>
template <>
int S3<double>::h(int) { return 0; }

template <>
template <>
int S3<char>::h(int) { return 1; }

int main()
{
  S1<int>::f();
  S2::g(3.0);
  S2::g(7);

  if (S3<double>::h(7) != 0) 
    abort();
  if (S3<char>::h(7) != 1)
    abort();
}
