Condividi tramite


Riferimento a modelli [linguaggio C++]

In questo argomento viene illustrato come utilizzare un modello dichiarato in precedenza.

template-name < template-arg-list >

Note

template-arg-list deve essere un elenco separato da virgola di:

expressiontype-name

Tutti gli argomenti di expression devono essere espressioni costanti. Il compilatore crea una nuova istanza (denominata creazione di istanza) della classe o della funzione basata su modelli nel caso in cui non esista un modello generato in precedenza. Ad esempio, fare riferimento alla classe MyStack definita in Modelli di funzioni 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 i propri membri.

Tutti gli argomenti di modello devono essere accessibili nel punto in cui vengono utilizzati.

L'eccezione alla regola di sintassi precedente è l'identificazione della specializzazione del modello del membro in un'espressione dopo ::. o gli operatori ->. Dopo questi operatori, può essere specificata la parola chiave template. Visual C++ si allontana dallo standard in quanto la parola chiave template è sempre facoltativa in questo contesto, mentre lo standard in alcune circostanze la richiede. La parola template non può essere utilizzata nella specializzazione se non dopo questi operatori.

[ :: | -> | . ] template template-name < template-arg-list >

Ad esempio, il seguente codice specifica una chiamata alla specializzazione int del modello della funzione membro f<T>(int), che è un membro della classe X, e la passa al parametro 10.

X::template f<int>(10);

Vedere anche

Altre risorse

Modelli