Modelli di riferimento
In questo argomento viene illustrato come utilizzare un modello che era dichiarato.
template-name < template-arg-list >
Note
modello-argomento-elenco deve essere un elenco delimitato da virgole di:
expressiontype-name
tutti espressione gli argomenti devono essere espressioni costanti.Il compilatore crea una nuova istanza (chiamata una creazione di istanza) della classe o della funzione basata su modelli se c " non è esatta a un modello generato in precedenza.Ad esempio, fare riferimento MyStack classe definita in Modelli di funzione membro:
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.
Ogni modello di funzione generato crea le proprie variabili statiche e membri.
Tutti gli argomenti di modello devono essere accessibili al punto in cui vengono utilizzati.
L'eccezione alla regola sopra di sintassi è l'identificazione della specializzazione del template membro in un'espressione dopo ::, . o - > operatori.Dopo gli operatori, la parola chiave template può essere specificato.Visual C++ parte dallo standard in quando template la parola chiave è sempre facoltativa in questo contesto, mentre lo standard lo richiede in alcune circostanze.La parola chiave di modello non può essere utilizzata nella specializzazione a meno che seguono questi operatori.
[ :: | -> | . ] modellomodello-nome**<modello-arg-list>**
Ad esempio, di seguito specifica una chiamata a int specializzazione di template di funzione membro f<T>(int) quale è un membro della classe X e passa il parametro 10.
X::template f<int>(10);