Disons que nous avons une fonction de modèle:Quand avons-nous besoin d'instancier explicitement une fonction template?
template <class T> T max(T a, T b) { return a > b ? a : b; }
Étant donné que le compilateur ne fonctionne pas d'une conversion de type implicite lors de la déduction de l'argument de modèle, nous pouvons invoquer max(2, 5.5)
dans ces deux façons:
- Utilisation de coulée :
max(static_cast<float>(2), 5.5f);
- Utiliser modèle explicite instanciation:
max<float>(2, 5.5);
Deuxième cas est logique pour moi, mais quand est-ce que nous faisons le modèle instanciation explicite dans le ci-dessous manière (instanciation sans invoquer la fonction max
avec type char):
template char max(char a, char b);
Que pouvons-nous atteindre sur il?
instanciation explicite permet de fournir la déclaration sans définition dans d'autres TU. – Jarod42
^- Ce qui est utile si votre modèle ne peut être appliqué qu'à un nombre limité de types, tous connus à l'avance. – StoryTeller