template<class T1, class T2>
struct A
{
  int f()
  { return 1; }
};

template<class T1>
struct A<T1, int>
{
  int f()
  { return 0; }
};


int main(int argc, char *argv[])
{
  A<int, int> a;

  return a.f();
}
