performances de static_cast
Bonjour à tous,
Dans le cadre de mon évolution sur l'apprentissage du C++, je me met a recourir de "plus en plus" (en restant bien entendu critique sur le fait d'avoir réellement besoin de son utilité ou non) au fameux static_cast. Cependant, dans certains cas, on se retrouve avec des fonctions telles que :
Code:
1 2 3 4 5
|
template<typename U, typename T>
U fonction_inutile(T const var) {
return static_cast<U>(var);
} |
Où, par exemple, U est de type float et T de type double (ou int peu importe). Dans le cas présent, ok, je souhaite que ma fonction transforme tout ce qui y entre en type float. Bien. Mais admettons que cette fonction soit appelée un grand nombre de fois avec T= float et un moindre nombre de fois avec T = int ; dans ce cas précis, peut il être recommandé, voire nécessaire de créer une seconde fonction (surchargée), telle que :
Code:
1 2 3 4 5
|
template<typename U>
U fonction_inutile(U const var) {
return var;
} |
Qu'en est-il au niveau performances pure ? Car niveau implémentation, cela oblige à doubler le nombre de fonctions, rendant ainsi les opérations de compilation, développement, débogage et maintenance sensiblement plus longs.
Si l'impact performances est présent, vers quelle solution vous orienteriez-vous ?
Dans mon cas, par exemple, je me permet de dire "je fais le code pour un seul type, et c'est l'utilisateur qui devra s'assurer que le type de var correspond bien au type U (en gros, à l'utilisateur de venir réaliser le cast lors de l'implémentation)". Mais peut être puis-je me permettre de généraliser mon code avec la première fonction sans que cela ne risque d'impacter les performances du programme ? Ou peut-être existe-t'il un moyen plus ingénieux ?
Merci d'avance !