Differenze rispetto ad altre implementazioni
Specifici di Microsoft
Di seguito sono 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 esattamente corrispondenze trovate dall'elenco di parametri di modello.Ad esempio:
template< class T > T check( T ); template< class S > void watch( int (*)(S) ); watch( check ); //error
Il compilatore deve creare un'istanza di una funzione basata su modelli check nel form int check( int ), ma l'inferenza non può essere seguita.
Nella risoluzione dei nomi utilizzati nei modelli o template di funzione della classe, tutti i nomi sono considerati come nomi dipendenti.Vedere Risoluzione dei nomi dei tipi dipendenti
In un modello di classe, il parametro di modello può essere ridefinito sotto la definizione della classe.Vedere Risoluzione dei nomi per i nomi in locale dichiarati