1// { dg-do run  }
2template <class T>
3void f(T t);
4
5template <class T>
6void f(T* t);
7
8template <>
9void f(int* ip) {}
10
11struct S1
12{
13  template <class T>
14  void f(T t);
15
16  template <class T>
17  void f(T* t);
18};
19
20template <>
21void S1::f(int* ip) {}
22
23template <class U>
24struct S2
25{
26  template <class T>
27  void f(T t);
28
29  template <class T>
30  void f(T* t);
31};
32
33template <>
34template <>
35void S2<double>::f(int* ip) {}
36
37int main()
38{
39  int* ip;
40  S1 s1;
41  s1.f(ip);
42  S2<double> s2;
43  s2.f(ip);
44}
45