Is S4Helpers::bar(t) another template function?
In that case, it would not care what type of parameter it got.
The fifth line simply casts t to type bar. It does not call a function.
I'm not exactly sure what your question is?
theturk1234: I guess if bar were a type then it would be a cast - but if it wasn't then that would be a function call, I think. If a type bar existed and a function bar existed also, then it would probably be ambiguous.