On the topic, I assume you all know that void foo(T bar) {} is not equivalent to void foo(bar) T bar; {} Specifically, you can't compile a function with prototypes, and then refer to it without prototypes and always be sure you get away with it. In most cases you can, but not always. Don't know if this a big concern or not. /Johan