// { dg-do run } template void f(T t); template void f(T* t); template <> void f(int* ip) {} struct S1 { template void f(T t); template void f(T* t); }; template <> void S1::f(int* ip) {} template struct S2 { template void f(T t); template void f(T* t); }; template <> template <> void S2::f(int* ip) {} int main() { int* ip; S1 s1; s1.f(ip); S2 s2; s2.f(ip); }