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