next up previous
Next: Spécification Up: Les templates Previous: Templater une fonction

Gestion par le compilateur

Dans l'exemple précédent, la fonction carre ne sera compilée que pour les valeurs de T pour lesquelles elle est effectivement appelée dans le programme. Ainsi, si elle n'est jamais appelée, elle ne sera pas compilée du tout, et si elle est appelée avec seulement les types int et float, elle ne sera compilée que pour ces deux types, et pas pour le type double par exemple. Par conséquent, il n'y aura pas de problème s'il existe un type particulier pour lequel l'opérateur * n'existe pas (alors qu'il est appelé dans la fonction carre) du moment que la fonction carre n'est jamais appelée sur une variable de ce type-là.

Note pour la compilation: comme les fonction templatées ne sont compilées que pour les types pour lesquels elles sont effectivement appelées, si votre programme est divisé en plusieurs fichiers compilés séparément, il faudra faire attention à mettre les définitions des fonctions templatées dans des .h et non pas dans des .cpp.


next up previous
Next: Spécification Up: Les templates Previous: Templater une fonction
Guillaume Charpiat 2006-12-07