template<class T>
struct A
{
 public:
  template<class U>
  void f(U u)
  { }

  template<class U>
  void g(U u);
};

template<class T>
template<class U>
void A<T>::g(U u)
{ }


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

  a.f(i);
  a.g(i);


  return 0;
}
