Partager via


Récapitulatif des modifications avec rupture au moment de la compilation

Mise à jour : novembre 2007

Cette rubrique résume les erreurs et avertissements survenus au moment de la compilation qui seront maintenant émis sur le code qui compilait sans erreur ou avertissement avant Visual C++ 2003. Toutefois, certaines modifications avec rupture au moment de la compilation relatives à la conformité, de compilation ont été introduites dans Visual C++ 2005.

  • La fermeture des parenthèses est désormais requise pour la directive de préprocesseur définie (C2004).

  • Un mot clé typename manquant et des spécialisations explicites ne trouvent plus de paramètres de modèle dans le modèle principal (C2146 ).

  • Un membre protégé (n) est uniquement accessible par l'intermédiaire d'une fonction membre d'une classe (B) qui hérite de la classe (A) dont il est (n) membre C2247).

  • Les vérifications de l'accessibilité améliorées dans le compilateur détectent désormais les classes de base inaccessibles (C2247).

  • Une spécialisation explicite ne peut pas être un constructeur de copie ou un opérateur d'assignation de copie C2299).

  • Une exception ne peut pas être intercepté si le destructeur et/ou le constructeur de copie est inaccessible (C2316).

  • Les arguments par défaut pour les pointeurs fonction ne sont plus autorisés (C2383).

  • Les données membres static ne peuvent pas être initialisées via une classe dérivée (C2477).

  • L'initialisation d'un typedef n'est pas autorisée par la norme et génère désormais une erreur du compilateur (C2513)..

  • bool est désormais un type propre (C2632).

  • Une conversion définie par l'utilisateur (UDC) peut maintenant créer une ambiguïté avec les opérateurs surchargés (C2666).

  • Une conversion de qualification n'est pas identique à une conversion d'identité (C2666).

  • Plus d'expressions sont maintenant considérées comme constantes pointeur null valides (C2668).

  • template<> est désormais requis là où le compilateur l'aurait précédemment déduit (C2768).

  • La spécialisation explicite d'une fonction membre à l'extérieur de la classe n'est pas valide si la fonction a déjà été spécialisée explicitement via une spécialisation de classe de modèle. (C2910).

  • Pour chaque spécialisation explicite, vous devez choisir les paramètres de toutes les spécialisations explicites, de sorte qu'elles correspondent aux paramètres du modèle principal (C2912).

  • Les paramètres de modèle sans type à virgule flottante ne sont plus autorisés (C2993).

  • Les modèles de classe ne sont pas autorisés comme arguments de type de modèle (C3206).

  • Les noms de fonction friend ne sont plus introduits dans l'espace de noms conteneur (C3767).

  • Conformité pointeur vers membre améliorée (C3867).

  • Le compilateur n'accepte plus les virgules superflues dans une macro (C4002).

  • Un objet de type POD construit avec un initialiseur de la forme () sera initialisé par défaut (C4345).

  • typename est désormais requis si un nom dépendant doit être traité comme un type (C4346).

  • Les fonctions incorrectement considérées auparavant comme spécialisations de modèle ne le sont plus (C4347).

  • Les données membres statiques ne peuvent pas être initialisées via une classe dérivée (C4356).

  • Une spécialisation de modèle de classe doit être définie avant d'être utilisée dans un type de retour (C4686).

  • Le compilateur signale désormais un code inaccessible (C4702).

  • Une déclaration friend qui déclare une nouvelle fonction sans modèle doit être définie (LNK2019).

Voir aussi

Référence

Modifications avec rupture dans le compilateur Visual C++