template class foo { T t; }; class bar; typedef foo foobar; class obj { virtual foobar* yeah() = 0; }; class bar : virtual public obj { };