// Build don't run:
// GROUPS passed templates membertemplates
extern "C" int printf(const char*, ...);

struct S
{
  template <class T, class U>
  void foo(T t, U u);

  template <class U>
  void foo(char*, U);

  void foo(int i);
};

template <class T, class U>
void S::foo(T t, U u)
{
  printf ("T,U version\n");
}


template <class U>
void S::foo(char*, U u)
{
  printf ("char*,U version\n");
}


void S::foo(int i)
{
  printf ("int version\n");
}


int main()
{
  S s;
  s.foo(3);
  s.foo(3, 3);
  s.foo("abc", s);
}

