I can write a templated function this way
template void f(T x) {…}
or this way
template void f(T
boost::traits has a type trait that selects the "best" type, based on T:
boost::traits
call_traits::param_type
As already mentioned, there are no template-specific issues.