Why is this template function?