1 template <typename T> 2 class foo 3 { 4 T t; 5 }; 6 7 class bar; 8 typedef foo<bar> foobar; 9 10 class obj 11 { 12 virtual foobar* yeah() = 0; 13 }; 14 15 class bar : virtual public obj 16 { 17 }; 18