1struct A {
2  virtual A* f () { return this; }
3};
4
5struct B: public A {
6  virtual B* f () { return 0; }
7};
8
9int main ()
10{
11  A* ap = new B;
12  return (ap->f () != 0);
13}
14