11590Srgrimes// { dg-do run  }
277248Skrisextern "C" void abort ();
31590Srgrimes
41590Srgrimestemplate <class T> void f ();
51590Srgrimestemplate <class T> void g ()
61590Srgrimes{
7  abort ();
8}
9
10template <> void g<char> ()
11{
12  abort ();
13}
14
15template <class T> class C
16{
17  public:
18    void ff () { f<T> (); }
19    void gg () { g<T> (); }
20    template <class U> void f () {}
21    template <class U> void g () {}
22    template <class U> void f (int) { abort(); }
23    template <class U> void g (int) { abort(); }
24};
25
26template <class T> void f ()
27{
28  abort ();
29}
30
31template <> void f<char> ()
32{
33  abort ();
34}
35
36int main ()
37{
38  C<int> c;
39  c.ff();
40  c.gg();
41  C<char> d;
42  d.ff();
43  d.gg();
44}
45