1// { dg-do run  }
2extern "C" void abort ();
3
4template <class T> void f ();
5template <class T> void g ()
6{
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> (0); }
19    void gg () { g<T> (1); }
20    template <class U> void f () { abort(); }
21    template <class U> void g () { abort(); }
22    template <class U> void f (int) {}
23    template <class U> void g (int) {}
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