// { dg-do run  }
extern "C" void abort();

class X
{
  public:
    virtual int f() const = 0;
};

template <class T>
class Y: public X
{
  public:
    virtual int f() const;
};

template <class T>
int Y<T>::f() const
{
  abort();
  return 0;
}

template <>
int Y<bool>::f() const;

template <>
int Y<bool>::f() const
{
  return 0;
}

int main()
{
  Y<bool> yb;

  yb.f();
}
