Ce que je voulais dire, c'est que ce n'est pas toi qui gère les conversions implicites mais le compilateur.
Par exemple, si tu as une fonction void f(float x), tu peux lui passer 3, 3.0 ou encore 3.f et ça va marcher. Le fait que ce soit un template n'y change rien étant donné que quand le type du template est spécifié, ça revient à une fonction normale.