1// { dg-do run  }
2extern "C" void abort();
3
4class X
5{
6  public:
7    virtual int f() const = 0;
8};
9
10template <class T>
11class Y: public X
12{
13  public:
14    virtual int f() const;
15};
16
17template <class T>
18int Y<T>::f() const
19{
20  abort();
21  return 0;
22}
23
24template <>
25int Y<bool>::f() const;
26
27template <>
28int Y<bool>::f() const
29{
30  return 0;
31}
32
33int main()
34{
35  Y<bool> yb;
36
37  yb.f();
38}
39