Partager via


Différences par rapport aux autres implémentations

Section 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 du module dans lequel il est défini. Visual C++ ne prend pas en charge le mot clé 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 d'un type sans ambiguïté qui correspond exactement à 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 check modélisée 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 des modèles de classe ou des modèles de fonction, 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 des noms localement déclarés

Voir aussi

Autres ressources

Modèles