This test program: struct bar;
template <class T> struct bar *foo (T *p) { return p->t; } produces an error in 4.0.0: test.cc:3: error: β??barβ?? is not a template type Without the keyword "struct" it compiles fine. Earlier versions (3.3.2, and I'm pretty sure 3.4.1 as well) don't complain. paul