> You expected that to work? Uhm, why not? template<class T> struct F { F<F<T> > f() { return F<F<T> >(); } }; int main() { F<int>().f().f().f().f().f(); // etc. return 0; } > Try thinking about your code before mouthing off here. Not trying to to be rude, but did you think about *your* reason before responding?