Différences d'autres implémentations
Spécifique à Microsoft
La liste suivante présente quelques différences entre Microsoft C++ et d'autres compilateurs.
Le compilateur ne peut pas instancier un modèle en dehors de le module dans lequel il est défini.Visual C++ ne prend pas en charge le mot clé de exporter .
Les modèles ne peuvent pas être utilisés avec les fonctions déclarées avec __declspec (dllimport) ou __declspec (dllexport).
Tous les arguments template doivent être de type pas ambigu ce qui correspond exactement de la liste de paramètres de modèle.Par exemple :
template< class T > T check( T ); template< class S > void watch( int (*)(S) ); watch( check ); //error
Le compilateur doit instancier la fonction modélisée d' check dans le formulaire int check( int ), mais l'inférence ne peut pas être suivie.
Lors de la résolution des noms utilisés dans les modèles de classe ou des modèles de fonctions, tous les noms sont traités comme noms dépendants.Consultez Résolution de noms pour les types dépendants
Dans un modèle de classe, le paramètre de modèle peut être redéfini dans la portée de la définition de classe.Consultez Résolution de noms pour les noms localement déclarés