struct B
{
  virtual int f() volatile
    { return 1; }
};

struct D : public B 
{
  int f() 
    { return 0; }
};

struct D2 : public D
{
  int f()
    { return 2; } 
};

int main()
{
  D2 d2;
  D& d = d2;
  return d.f();
}
