// { dg-do link } // GROUPS passed templates membertemplates extern "C" int printf(const char*, ...); struct S { template void foo(T t, U u); template void foo(char*, U); void foo(int i); }; template void S::foo(T t, U u) { printf ("T,U version\n"); } template 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); }