Uhm.... Maybe they could inherit from a base class that had trivial definitions of the unnecessary functions (just return 0 or something), and the subclasses could override them with more useful local definitions of the functions that would be needed.

Stick<a,Stick<b,Stick<c> > > isn't really what I would call recursion, but I see what you mean. I think maybe the best way to find out if your compiler is optimising it the way you would like would be to write a simple example (I mean really simple) and look at the assembly code that it produces. You'd have to look at a non-Windows app though to avoid all the console code.

There was a good article on templates and optimisations at Flipcode a while ago, aimed at efficient matrix calculations. That might be the one you were thinking of earlier, but if not check it out.