// Origin: PR c++/47666
// { dg-do compile }
template <typename T>
struct A
{
  int a;
};
template <typename T>
struct B : public A <T>
{
};
class D : public B <D *>
{
  virtual D & operator= (const D &);
};
class E : virtual public D
{
};
class F : public E
{
  virtual void foo ();
};