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