Freigeben über


Unterschiede zu anderen Implementierungen

Microsoft-spezifisch

Die folgende Liste zeigt einige Unterschiede zwischen Microsoft C++ und anderen Compilern.

  • Der Compiler kann keine Vorlage außerhalb des Moduls instanziieren, in dem sie definiert ist. Visual C++ unterstützt das Schlüsselwort export nicht.

  • Vorlagen können nicht mit Funktionen verwendet werden, die mit __declspec (dllimport) oder __declspec (dllexport) deklariert wurden.

  • Alle Vorlagenargumente müssen über einen eindeutigen Typ verfügen, der mit dem auf der Vorlagenparameterliste genau übereinstimmt. Beispiel:

    template< class T > T check( T );
    template< class S > void watch( int (*)(S) );
    watch( check );     //error
    

    Der Compiler sollte die auf Vorlagen basierende Funktion check in der Form int check( int ) instanziieren, aber der Ableitung kann nicht gefolgt werden.

  • Wenn Sie die Namen in Klassenvorlagen oder Funktionsvorlagen auflösen, werden alle Namen als abhängige Namen behandelt. Weitere Informationen erhalten Sie unter Namensauflösung für abhängige Typen.

  • In einer Klassenvorlage kann der Vorlagenparameter im Kontext der Klassendefinition neu definiert werden. Weitere Informationen erhalten Sie unter Namensauflösung für lokal deklarierte Namen.

Siehe auch

Weitere Ressourcen

Vorlagen