No es porque sea un template... en C++ no puedes tener dos funciones que difieran únicamente en el tipo de dato de retorno:
Código C++:
Ver original// Esto no compila
int func(char)
{return 0; }
char func(int)
{ return '0'; }
Para hacer eso hay que recurrir al truco de usar la sobrecarga del operador
función de una clase, pero eso ya lo verás más adelante que no es plan de agobiarte a conceptos jejeje.