Why template function?