can global function be declared as template?
Within a template definition, the compiler does not support referencing an object or function that is declared static at global scope or in a namespace. ... If you want a different object for each instantiation of a template class, then make the object a static member of the template class.