L'objectif de tout polymorphisme est de faire en sorte qu'une routine donnée (une fonction ou une fonction template) s'exécute et fasse les choses correctement, même si nous ignorons quels types de variables nous allons utiliser effectivement. Autrement dit, il s'agit de mettre en œuvre une forme de type erasure, une sorte de ligne de démarcation derrière laquelle il pourrait y avoir différents sous-programmes en cours d'exécution à des moments différents, mais devant elle nous avons toujours le même algorithme.
Partager