Differenze da altre implementazioni
Sezione specifica Microsoft
Nell'elenco seguente vengono illustrate alcune differenze tra Microsoft C++ e altri compilatori.
Il compilatore non può creare un'istanza di un modello al di fuori del modulo in cui è definito. Visual C++ non supporta la parola chiave export.
I modelli non possono essere utilizzati con le funzioni dichiarate con __declspec (dllimport) o __declspec (dllexport).
Tutti gli argomenti di modello devono essere di un tipo non ambiguo che corrisponda esattamente al tipo dell'elenco di parametri di modello. Di seguito è riportato un esempio.
template< class T > T check( T ); template< class S > void watch( int (*)(S) ); watch( check ); //error
Il compilatore dovrebbe creare un'istanza della funzione check basata su modelli nel modulo int check( int ), ma non è possibile seguire l'inferenza.
Nel risolvere nomi utilizzati in modelli di classe o di funzione, tutti i nomi vengono considerati come nomi dipendenti. Vedere Risoluzione dei nomi dei tipi dipendente
In un modello di classe, il parametro di modello può essere ridefinito nell'ambito di una definizione di classe. Vedere Risoluzione dei nomi dichiarati localmente