Condividi tramite


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

Vedere anche

Altre risorse

Modelli