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.