Référencement des modèles
Cette rubrique indique comment utiliser un modèle qui a été déclaré précédemment.
template-name < template-arg-list >
Notes
La modèle-arg-liste doit être une liste avec la virgule comme séparateur de :
expressiontype-name
tous les arguments d' expression doivent être des expressions constantes.Le compilateur crée une nouvelle instance (appelée une instanciation) de la classe ou de la fonction modélisée s'il n'existe pas de correspondance exacte à un modèle généré précédemment.par exemple, pour référencer la classe d' MyStack définie dans Modèles de fonction membre:
MyStack< unsigned long, 5 > stack1;
// Creates a stack of unsigned longs.
MyStack< DWORD, 5 >stack2;
// Uses code created above.
MyStack< char, 6 > stack3;
// Generates new code.
MyStack< MyClass, 6 > stack4;
// Generates stack of MyClass objects.
Chaque modèle de fonction généré crée ses propres variables et membres statiques.
tous les arguments template doivent être accessibles au point où ils sont utilisés.
l'exception à la règle de syntaxe ci-dessus est en identifiant une spécialisation membre de modèle dans une expression après ::. ou des opérateurs de - > .après ces opérateurs, le mot clé template peut être spécifié.Visual C++ s'éloigne du standard car le mot clé d' template est toujours facultatif dans ce contexte, alors que la norme le requiert dans certaines circonstances.le mot clé de modèle ne peut pas être utilisé dans la spécialisation à moins que suivant ces opérateurs.
[ :: | -> | . ] templatetemplate-name<template--arglist**>**
Par exemple, le code suivant spécifie un appel à la spécialisation d' int du modèle f<T>(int) de fonction membre qui est membre de la classe X et le passe le paramètre 10.
X::template f<int>(10);