Bonjour,
Mon problème est à priori simple, si tant est qu'il ait une solution.
L'exemple qui suit n'est pas mon problème mais c'est le même raisonnement.
A partir de ces deux fonctions :
Je veux trouver ces appelles à la compilation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 template <class T> inline float Sin(T a) { return sinf(a); } //fonction 1 renvoyant un float template <class T> inline double Sin(T a) { return sin(a); } //fonction 2 renvoyant un double
Mais l'ennuie c'est que le compilateur trouve une ambiguïté du à "l'autocasting" (coercition ?) float -> double, double -> float.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 float fa = Math::Sin((double)1.0); //Utilisation de la fonction 1 float fb = Math::Sin((float)1.0); //Utilisation de la fonction 1 double da = Math::Sin((double)1.0); //Utilisation de la fonction 2 double db = Math::Sin((float)1.0); //Utilisation de la fonction 2
Il n'y aurait pas une solution simple et propre de clarifier ça pour le compilateur ? Merci.
Partager