Nouveautés de C++ dans Visual Studio 2022

Visual Studio 2022 comprend un grand nombre de mises à jour et de correctifs des outils et du compilateur Microsoft C++. L’IDE Visual Studio offre également des améliorations significatives en matière de performances et de productivité, et s’exécute désormais en mode natif en tant qu’application 64 bits.

Nouveautés de C++ dans Visual Studio version 17.12

Publication : novembre 2024

Pour plus d'informations sur Consultez
Nouveautés pour les développeurs C++ Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.12
Bibliothèque standard (STL) fusionnée des fonctionnalités C++26 et C++23, résolution des problèmes LWG, améliorations des performances, comportement amélioré et bogues corrigés Journal des modifications STL 17.12
Nouvelles fonctionnalités de l’IDE Visual Studio 17.12 Notes de publication de Visual Studio 2022 version 17.12
Améliorations de la conformité du langage C++ dans Visual Studio 2022 17.12 Améliorations de conformité C++, modifications de comportement et correctifs de bogues dans Visual Studio 2022 17.12

Une mise en évidence rapide de certaines des nouvelles fonctionnalités :

  • Améliorations apportées à la bibliothèque standard
    • L’implémentation des plages de mise en forme C++23 (P2286R8) est terminée. Ajout de formateurs pour les adaptateurs stackde conteneur, queueet priority_queue.
    • Ajout d’opérateurs d’indice multidimensionnels, qui prennent également en charge <mdspan>. Par exemple : print("m[{}, {}]: '{}'; ", i, j, m[i, j]).
  • Développement de jeux en C++
  • Générer des insights
    • Vous pouvez exécuter Build Insights sur les fichiers sélectionnés. Sélectionnez les fichiers souhaités dans le Explorateur de solutions, cliquez avec le bouton droit et choisissez Exécuter Build Insights sur les fichiers sélectionnés :Capture d’écran des fichiers dans le Explorateur de solutions. Le menu contextuel est ouvert et l’option d’exécution d’Insights de build sur les fichiers sélectionnés est mise en surbrillance.
    • Vous pouvez filtrer les résultats de Build Insights par projet. Cliquez sur le bouton filtrer dans l’en-tête de colonne de filtre, puis sélectionnez les projets pour finaux : Capture d’écran de la fenêtre Build Insights avec l’onglet Fichiers inclus ouvert. Le bouton de filtre a été sélectionné et une liste de projets s’affiche. Les cases à cocher en regard de deux projets sont cochées.
    • Cliquez sur l’icône point d’interrogation dans la fenêtre Build Insights pour afficher une brève description des onglets de la fenêtre Build Insights et un lien vers la documentation pour obtenir une explication détaillée : Capture d’écran de la fenêtre Build Insights avec le bouton d’explications d’affichage (un point d’interrogation dans un cercle) mis en surbrillance.
  • GitHub Copilot
    • Vous pouvez cliquer sur Demander à Copilot en regard de la valeur d’une variable pour obtenir des insights pilotés par l’IA sur ce qui a conduit à son état actuel. Par exemple, le programme suivant présente une erreur off-by-one dans sa condition de boucle :

    Capture d’écran de la fenêtre Autos. La variable nommée est NULL. L’icône Ask Copilot en regard de celle-ci est mise en surbrillance.

    Le code qui a provoqué ce problème est : pour (auto it = h.animals_.begin() ; il <= h.animals_.end() ; it++).

    Si vous cliquez sur l’icône Demander à Copilot pour la it variable, elle vous indique pourquoi elle est <NULL>:

    Capture d’écran d’une fenêtre GitHub Copilot.

    Cette erreur se trouve à l’intérieur d’une fonction définie comme int calculate_number_of_cats(const house&h). Le message GitHub Copilot indique : « La valeur de l’expression est NULL, ce qui signifie que l’itérateur ne pointe vers aucun élément valide dans le vecteur animals_. Dans le contexte de votre programme, il est supposé itérer sur le vecteur animals_ dans l’objet maison pour compter le nombre d’objets de chat. Pourquoi elle a la valeur Null. En fonction des paramètres locaux et du contexte de pile des appels : l’objet maison h a un vecteur de animals_ vide (size=0). La condition de boucle qu’elle <= h.animals_.end() est incorrecte. Il devrait s’agir de != h.animals_.end()."

    • Vous pouvez cliquer sur Demander à Copilot sur les erreurs dans la liste d’erreurs de Visual Studio pour obtenir de l’aide sur l’erreur et un correctif suggéré. Par exemple :

    Capture d’écran de la fenêtre Liste d’erreurs.

    L’icône Ask Copilot est mise en surbrillance en regard d’une erreur qui unique_ptr tente de référencer une fonction supprimée.

    Si vous cliquez sur Demander à Copilot, il vous indique l’erreur :

    Capture d’écran de l’explication de GitHub Copilot pour l’erreur.

    Le message Copilot indique : « L’erreur se produit parce que la boucle basée sur la plage tentait de copier des objets std ::unique_ptr, ce qui n’est pas autorisé, car std ::unique_ptr ne peut pas être copié. Pour résoudre ce problème, j’ai modifié la boucle pour utiliser une référence pour éviter de copier les objets std ::unique_ptr. Ainsi, la boucle itère sur les références aux objets std ::unique_ptr, ce qui est autorisé. »

  • Débogage
    • Nouveaux visualiseurs de débogage pour mutex, recursive_mutexet move_iterator.
    • Le débogueur affiche désormais les valeurs de retour inline : Capture d’écran d’une info-bulle montrant la valeur 8.25. Il s’agit du résultat de l’expression suivant l’instruction return qui a été pas à pas.

Nouveautés de C++ dans Visual Studio version 17.11

Publication : août 2024

Pour plus d'informations sur Consultez
Nouveautés pour les développeurs C++ Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.11
La bibliothèque standard (STL) a fusionné les fonctionnalités C++26 et C++23, les rapports de défaut C++20, les résolutions de problèmes LWG, les améliorations des performances, le comportement amélioré et les bogues corrigés Journal des modifications STL 17.11
Nouvelles fonctionnalités de l’IDE Visual Studio 17.11 Notes de publication de Visual Studio 2022 version 17.11
Améliorations de la conformité du langage C++ dans Visual Studio 2022 17.11 Améliorations de conformité C++, modifications de comportement et correctifs de bogues dans Visual Studio 2022 17.11

Liste partielle des nouvelles fonctionnalités :

  • Améliorations apportées à la bibliothèque standard

    • L’implémentation de sortie mise en forme inclut std::range_formatter désormais et met en forme des formateurs pour std::pair et std::tuple.
    • Ajout de la prise en charge de std::println() l’absence d’arguments. Cela imprime une ligne vide telle qu’elle est proposée dans P3142R0.
    • Amélioration de la vectorisation pour plusieurs algorithmes, notamment replace_copy(), , replace_copy_if()ranges::replace_copy_ifranges::replace_copy, find_first_of() et ranges::find_first_of, pour les éléments 8 bits et 16 bits, , count() ranges::mismatchmismatch()find()ranges::findranges::count, ranges::find_last, et .ranges::iota
  • Développement de jeux en C++

    • Vous pouvez maintenant ajouter des modèles de classe, des modules et des plug-ins Unreal Engine courants à partir de Visual Studio. Pour plus d’informations, consultez Ajouter des classes, des modules et des plug-ins du moteur Unreal dans Visual Studio.
    • La nouvelle barre d’outils Unreal Engine fournit un accès rapide aux actions associées à Unreal Engine à partir de Visual Studio. La barre d’outils vous permet de joindre rapidement des processus Unreal Engine, de réanalyser le cache Blueprints, d’accéder rapidement au journal du moteur Unreal et d’accéder rapidement à la page de configuration du moteur Unreal pour Visual Studio. Pour plus d’informations, consultez La barre d’outils Du moteur Unreal.
    • Vous pouvez désormais filtrer les résultats de trace par projet. En outre, chaque ligne affiche le chemin d’accès relatif et le nom de fichier au lieu du chemin d’accès complet. Le regroupement des résultats dans la vue Fichiers inclus est également amélioré :

    Capture d’écran des résultats améliorés des diagnostics Fichiers inclus.

    La vue Fichiers inclus contient une nouvelle colonne pour le projet. La colonne Project est sélectionnée et les projets tels que (Sélectionner tout), CompilerIdC, OpenAL, common, etc. sont sélectionnés. Les fichiers inclus sont répertoriés par chemin d’accès relatif et nom de fichier et regroupés.

  • Débogage CMake

    • Vous pouvez désormais déboguer vos scripts et CMakeLists.txt fichiers CMake dans le débogueur Visual Studio pour les projets CMake qui ciblent Linux via Sous-système Windows pour Linux (WSL) ou SSH. Pour démarrer une session de débogage CMake dans Visual Studio, définissez un point d’arrêt dans votre CMakeLists.txt fichier, puis accédez à Project>Configure Cache avec le débogage CMake.
  • GitHub Copilot

    • Lorsque vous pointez sur des symboles dans l’éditeur de code, cliquez sur le bouton Copilot Dites-moi plus dans la boîte de dialogue Informations rapides pour en savoir plus sur un symbole donné :

    Capture d’écran de la fenêtre Informations rapides.

    La fenêtre Informations rapides s’affiche au-dessus d’une fonction. Le lien Savoir-moi est mis en surbrillance.

    • GitHub Copilot peut générer des suggestions de nommage pour vos identificateurs (variables, méthodes ou classes) en fonction de la façon dont votre identificateur est utilisé et du style de votre code.

      Capture d’écran de la boîte de dialogue Renommer GitHub Copilot.

      La boîte de dialogue Renommer comporte un nouveau champ de nom avec une liste déroulante qui affiche ces choix : text_color, font_color, display_color, console_color et menu_text_color.

    Vous avez besoin d’un abonnement GitHub Copilot actif. Cliquez avec le bouton droit sur la variable que vous souhaitez renommer, puis choisissez Renommer (Ctrl+R, Ctrl+R). Sélectionnez l’icône Sparkle GitHub Copilot pour générer des suggestions de nommage.

  • Débogage

    • Les points d’arrêt conditionnels en C++ sont plus rapides.
  • Améliorations des diagnostics

    • Amélioration des diagnostics lors de l’appel std::get<T> d’une std::tuple instance comportant plusieurs instances de ses arguments de T modèle. MSVC utilisé pour signaler :
      error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'.
      Maintenant, il signale :
      error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
    • Amélioration des diagnostics lorsqu’il std::ranges::to n’est pas en mesure de construire le résultat demandé. MSVC utilisé pour signaler :
      error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
      Maintenant, il signale :
      error C2338: static_assert failed: 'ranges::to requires the result to be constructible from the source range, either by using a suitable constructor, or by inserting each element of the range into the default-constructed object. (N4981 [range.utility.conv.to]/2.1.5)'

Nouveautés de C++ dans Visual Studio version 17.10

Publication : mai 2024

Pour plus d'informations sur Consultez
Nouveautés pour les développeurs C++ Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.10
La bibliothèque standard (STL) a fusionné les fonctionnalités C++26 et C++23, les rapports de défaut C++20, les résolutions de problèmes LWG, les améliorations des performances, le comportement amélioré et les bogues corrigés Journal des modifications STL 17.10
Nouvelles fonctionnalités de l’IDE Visual Studio 17.10 Notes de publication de Visual Studio 2022 version 17.10
Améliorations de la conformité du langage C++ dans Visual Studio 2022 17.10 Améliorations de la conformité de C++, changements de comportement et correctifs de bogues dans Visual Studio 2022 17.10

Liste partielle des nouvelles fonctionnalités :

  • Mise à jour de l’ensemble d’outils MSVC : la version de l’ensemble d’outils MSVC est mise à jour de 19.39 à 19.40. Cela peut affecter les projets qui ont des hypothèses de version. Pour plus d’informations sur certaines façons dont cela affecte les projets qui supposent que les versions MSVC sont toutes les versions 19.3X pour Visual Studio 2022, voir MSVC Toolset Minor Version Number 14.40 dans VS 2022 v17.10.
  • Améliorations apportées à la bibliothèque standard : la bibliothèque standard a ajouté la prise en charge des pointeurs de mise en forme P2510R3, ce qui apporte l’ensemble de spécificateurs de format pour les pointeurs lors de l’utilisation std::format de plus en ligne avec celles qui existent déjà pour les entiers. Amélioration des implémentations vectorisées de std::min_element, std::ranges::min et amis.
  • Build Insights: fournit désormais des informations d’instanciation de modèle. Consultez Vue Modèles pour Build Insights dans Visual Studio ou l’enregistrement Pure Virtual C++ – Vue Modèles pour Build Insights dans Visual Studio.
  • Plug-in Unreal Engine : une nouvelle fonctionnalité nécessitant une adhésion permet au plug-in Unreal Engine de s’exécuter en arrière-plan, ce qui réduit les coûts de démarrage. Il s’agit d’une fonctionnalité nécessitant une adhésion activée via l’option de menu Outils>Options>Unreal Engine.
  • Nouvelles fonctionnalités pour Linux: Consultez Nouvelles fonctionnalités de développement Linux dans Visual Studio.
  • Cibles CMake : vous pouvez désormais épingler des cibles dans la vue Cibles CMake.
  • Expérience utilisateur du gestionnaire de connexions : l’expérience utilisateur offre une expérience plus transparente lors de la connexion à des systèmes distants. Pour plus d’informations, consultez Améliorations de la facilité d’utilisation du gestionnaire de connexions Visual Studio.
  • Commentaires de demande de tirage (pull request) : vous pouvez désormais afficher les commentaires GitHub et Azure DevOps directement dans votre fichier de travail. Activez l’indicateur de fonctionnalité Commentaires de demande de tirage (pull request) dans l’option de menu Options>Environnement>Fonctionnalités en préversion et basculez sur la branche de demande de tirage (pull request) pour commencer.
  • Contenu généré par l’IA : GitHub Copilot peut désormais rédiger des descriptions de demande de tirage (pull request). Nécessite un abonnement GitHub Copilot actif. Faites un test en cliquant sur l’icône de stylet brillant Ajouter une description de demande de tirage générée par IA dans la fenêtre Créer une demande de tirage (pull request).
  • Aperçu de l’image : pointez sur un chemin d’accès d’image pour afficher un aperçu avec des détails de taille. La taille est limitée à 500 px large et haute.

    Capture d’écran de l’aperçu de pointage.

    La souris pointe sur la ligne std::filesystem::p ath vs_logo_path = "../images/vs_logo.png". En dessous apparaît un aperçu du logo Visual Studio et les informations dont la taille est de 251 x 500 pixels et de 13,65 Ko.

  • Création de points d’arrêt/point de trace : vous pouvez désormais créer des points de trace ou des points d’arrêt conditionnels directement à partir d’expressions dans le code source à partir du menu contextuel. Cela fonctionne sur les noms et les valeurs de propriétés ou de champs à partir des fenêtres autos, locals et watch, ou DataTips.
  • Boîte de dialogue Attacher au processus : les fonctionnalités fournies par la boîte de dialogue Attacher au processus sont plus conviviales. Vous pouvez désormais basculer facilement entre les vues d’arborescence et de liste, améliorer l’organisation des processus avec des sections réductibles et sélectionner des types de code avec une zone de liste modifiable simplifiée. De plus, l’utilisation de la fonctionnalité « Sélectionner/suivre la fenêtre » a été simplifiée en permettant le suivi bidirectionnel : sélectionner un processus met en surbrillance la fenêtre correspondante et cliquer sur une fenêtre sélectionne le processus correspondant.
  • Intégration de GitHub Copilot : Les extensions GitHub Copilot et Copilot Chat sont désormais unifiées et sont désormais livrées directement dans Visual Studio. Pour l’installer, installez le composant GitHub Copilot dans Visual Studio Installer :

    Capture d’écran de l’option d’installation de GitHub Copilot dans Visual Studio Installer.

    L’interface GitHub Copilot se trouve dans le coin supérieur droit de Visual Studio. Pour l’utiliser, vous avez besoin d’un abonnement GitHub Copilot actif.

    Capture d’écran du bouton GitHub Copilot.

    Le bouton GitHub Copilot s’affiche dans le coin supérieur droit de Visual Studio. Il dispose d’options pour ouvrir une fenêtre de conversation, les paramètres GitHub Copilot, pour en savoir plus et pour gérer l’abonnement Copilot.

Nouveautés de C++ dans Visual Studio version 17.9

Publication : février 2024

Pour plus d'informations sur Consultez
Nouveautés pour les développeurs C++ Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.9
La bibliothèque standard (STL) a fusionné les fonctionnalités C++23, les améliorations des performances, le comportement amélioré, les résolutions de problèmes LWG et les bogues corrigés Journal des modifications STL 17.9
Nouvelles fonctionnalités de l’IDE Visual Studio 17.9 Notes de publication Visual Studio 2022 version 17.9
Améliorations de la conformité du langage C++ dans Visual Studio 2022 17.9 Améliorations de la conformité de C++, changements de comportement et correctifs de bogues dans Visual Studio 2022
Résumé des mises à jour principales de C++ Mises à jour principales de MSVC depuis Visual Studio 2022 version 17.3

Liste partielle des nouvelles fonctionnalités :

  • Diagnostics #include, qui fournissent une analyse détaillée de vos directives #include. Activez cette fonctionnalité en cliquant avec le bouton droit sur une directive #include et en choisissant directives #include>Activer les diagnostics #include sur. Au-dessus de chaque directive #include, vous trouverez le nombre de fois où votre code fait référence à ce fichier #include. Cliquez sur le lien de référence pour accéder à l’emplacement où votre code utilise quelque chose à partir de ce fichier d’en-tête. Pour afficher la durée de build de vos directives #include, exécutez Build Insights en accédant à Build>Exécuter Build Insights sur la solution>Build.

    Capture d’écran des diagnostics #include.

    Au-dessus du #include est un lien **reference** et la plupart des références à ce fichier # include (dans ce cas 1). La durée de build est également répertoriée (dans ce cas inférieur à 1/2 seconde).

  • Visualisation de la disposition de la mémoire, qui montre comment la mémoire est organisée pour vos classes, structs et unions. Pointez sur un type et choisissez le lien Disposition de la mémoire dans les informations rapides pour ouvrir une fenêtre dédiée affichant la disposition de la mémoire du type sélectionné. Pointer sur des types de données individuels dans cette fenêtre fournit des informations détaillées sur leur taille et leur décalage au sein du type.

    Capture d’écran de la fenêtre de disposition de la mémoire

    La fenêtre de disposition de la mémoire affiche le contenu de la classe Snake. Elle affiche les décalages de mémoire des différents champs de la classe, tels que les classes Point pour l’emplacement de la tête et du corps, le score, etc.

  • Vous pouvez maintenant spécifier votre propre exécutable CMake personnalisé. Cette fonctionnalité est utile si vous souhaitez utiliser une version spécifique de CMake qui n’est pas fournie avec Visual Studio. Accédez à Outils>Options et sélectionnez CMake>Général. Sélectionnez Activer l’exécutable CMake personnalisé et spécifiez le chemin d’accès du répertoire de votre exécutable CMake.

    Capture d’écran de la boîte de dialogue d’options CMake

    Boîte de dialogue d’options CMake avec l’option « Activer l’exécutable CMake personnalisé » et le champ « Répertoire de l’exécutable CMake » mis en surbrillance.

  • Amélioration d’IntelliSense pour les projets Unreal Engine.
  • Amélioration de la prise en charge de C++23 : std::format et std::spanformattable, range_format, format_kind et set_debug_format() dans le cadre des plages de mise en forme P2286R8<mdspan> selonP0009R18 et modifications de formulation suivantes qui ont été appliquées à la norme C++23. format() peut également mettre en forme des pointeurs selon P2510R3.

Nouveautés de C++ dans Visual Studio version 17.8

Publication : novembre 2023

Pour plus d'informations sur Consultez
Nouveautés pour les développeurs C++ Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.8
La bibliothèque standard (STL) a fusionné les fonctionnalités C++26 et C++23, les extensions C++20, les résolutions de problèmes LWG, les améliorations des performances, le comportement amélioré et les bogues corrigés Journal des modifications STL 17.8
Nouvelles fonctionnalités de l’IDE Visual Studio 17.8 Notes de publication Visual Studio 2022 version 17.8
Améliorations de la conformité du langage C++ dans Visual Studio 2022 17.8 Améliorations de la conformité de C++, changements de comportement et correctifs de bogues dans Visual Studio 2022
Vue d’ensemble des améliorations de C++ dans Visual Studio, VS Code et vcpkg en 2023 Une année d’améliorations C++

Liste partielle des nouvelles fonctionnalités :

  • Diagnostics structurés C++ dans la fenêtre Sortie et une nouvelle fenêtre de détails du problème qui fournit plus d’informations sur l’erreur. Pour plus d’informations, consultez la fenêtre Sortie SARIF structurée et Fenêtre des détails du problème.
  • Fonctionnalité qui vous permet de visualiser la taille et l’alignement de vos classes, structs, unions, types de base ou énumérations même avant la compilation du code. Pointez sur l’identificateur et une information rapide affiche les informations de taille et d’alignement.
  • Fonctionnalité qui suggère quand marquer les fonctions membres const, car elles ne modifient pas l’état de l’objet. Pointez sur une fonction membre et cliquez sur l’icône de l’ampoule pour marquer la fonction comme const.
  • Visual Studio vous invite désormais à marquer les fonctions globales comme statiques via une icône de tournevis qui apparaît à côté du nom de la fonction. Cliquez sur l’icône du tournevis pour marquer la fonction comme statique.
  • Les directives #include inutilisées sont grisées dans l’éditeur. Vous pouvez pointer sur l’include grisé et utiliser le menu Ampoule pour supprimer cet include ou tous les includes inutilisés. Vous pouvez également ajouter des directives #include pour les entités incluses indirectement via d’autres en-têtes. Pour plus d’informations, consultez Nettoyer les includes C/C++ dans Visual Studio.
  • Plus de prise en charge d’Unreal Engine :
    • L’adaptateur de test Unreal Engine vous permet de découvrir, d’exécuter, de gérer et de déboguer vos tests Unreal Engine sans quitter l’environnement de développement intégré Visual Studio.
    • Avec les extraits de code Unreal Engine, vous trouverez des constructions Unreal Engine courantes en tant qu’extraits de code dans votre liste de membres.
    • Build Insights est désormais intégré à Visual Studio 2022 et fonctionne avec des projets MSBuild et CMake à l’aide de MSVC. Vous pouvez maintenant voir des informations supplémentaires sur la compilation d’une fonction, telles que la durée nécessaire à la compilation et le nombre de ForceInlines, ainsi que l’impact des fichiers d’en-tête sur la durée de build. Pour plus d’informations, consultez Tutoriel : Résoudre les problèmes d’incorporation de fonction au moment du build et Tutoriel : Résoudre les problèmes d’impact du fichier d’en-tête sur la durée de build.
  • La prise en charge des tests unitaires Linux distants vous permet désormais d’exécuter vos tests CTest et GTest sur vos machines Linux distantes à partir de l’explorateur de tests de Visual Studio, tout comme vos tests locaux.

Nouveautés de C++ dans Visual Studio version 17.7

Publication : août 2023

Pour plus d'informations sur Consultez
Nouveautés pour les développeurs C++ Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.7
Nouvelles fonctionnalités C++ spécifiques au développement de jeux Libération de la puissance de Visual Studio 2022 pour le développement de jeux C++
La bibliothèque standard (STL) a fusionné les fonctionnalités C++23, les résolutions de problèmes LWG, les améliorations des performances, le comportement amélioré et les bogues corrigés Journal des modifications STL 17.7
Nouvelles fonctionnalités de l’IDE Visual Studio 17.7 Notes de publication de Visual Studio 2022 version 17.7
Améliorations de la conformité du langage C++ dans Visual Studio 2022 17.7 Améliorations de la conformité de C++, changements de comportement et correctifs de bogues dans Visual Studio 2022

Liste partielle des nouvelles fonctionnalités :

  • Sessions de débogage et temps de chargement de projet plus rapides
  • Visualisation pas à pas de l’expansion des macros
  • Téléchargement en un clic pour le Sous-système Windows pour Linux (WSL)
  • Prise en charge améliorée des commentaires Doxygen
  • Insights de génération C++ pour le développement de jeux
  • /std:clatest ajouté pour le compilateur C.
  • Améliorations apportées au projet Unreal Engine, telles que l’accélération d’IntelliSense et de la coloration syntaxique, la possibilité de trouver toutes les références Unreal Engine Blueprint, etc.

Nouveautés de C++ dans Visual Studio version 17.6

Publication : mai 2023

Pour plus d'informations sur Consultez
Nouveautés pour les développeurs C++ Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.6
La bibliothèque standard (STL) a fusionné les fonctionnalités C++23, les résolutions de problèmes LWG, les améliorations des performances, le comportement amélioré et les bogues corrigés Journal des modifications STL 17.6
Nouvelles fonctionnalités de l’IDE Visual Studio 17.6 Notes de publication de Visual Studio 2022 version 17.6
Améliorations de la conformité du langage C++ dans Visual Studio 2022 17.6 Améliorations de la conformité de C++, changements de comportement et correctifs de bogues dans Visual Studio 2022

Liste partielle des nouvelles fonctionnalités :

  • Débogage de script CMake
  • Prise en charge intégrée du langage HLSL (High Level Shading Language)
  • Visionneuse du journal Unreal Engine
  • VCPKG est désormais ajouté par défaut
  • Prise en charge initiale de C++20 dans les projets C++/CLI et certaines fonctionnalités de bibliothèque standard C++23 pour les plages.

Nouveautés de C++ dans Visual Studio version 17.5

Publication : février 2023

Pour plus d'informations sur Consultez
Nouveautés pour les développeurs C++ Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.5
La bibliothèque standard (STL) a fusionné les fonctionnalités C++23, les résolutions de problèmes LWG, les améliorations des performances, le comportement amélioré et les bogues corrigés Journal des modifications STL 17.5
Nouvelles fonctionnalités de l’IDE Visual Studio 17.5 Notes de publication de Visual Studio 2022 version 17.5

Liste partielle des nouvelles fonctionnalités :

  • Désormais, std::move, std::forward, std::move_if_noexcept et std::forward_like ne produisent pas d’appels de fonction dans le code généré, même en mode débogage. Cette modification évite les casts nommés provoquant une surcharge inutile dans les builds de débogage. /permissive- (ou une option qui l’implique, comme /std:c++20 ou std:c++latest) est requise.

  • [[msvc::intrinsic]] a été ajouté. Vous pouvez appliquer cet attribut à des fonctions non récursives composées d’un seul cast, qui ne prennent qu’un seul paramètre.

  • Ajout de la prise en charge de la console Linux dans le terminal intégré, permettant d’effectuer des E/S de terminal.

  • Ajout de la prise en charge expérimentale initiale des primitives atomiques C11 (<stdatomic.h>). Vous pouvez activer cette fonctionnalité expérimentale avec l’option /experimental:c11atomics en mode /std:c11 ou version ultérieure.

  • Ajout d’un nouvel ensemble de vérifications expérimentales de haute confiance au vérificateur de durée de vie pour réduire le bruit.

  • Une nouvelle fonctionnalité en préversion, Remote File Explorer, vous permet d’afficher le répertoire de fichiers sur vos ordinateurs distants au sein de VS, et de charger et de télécharger des fichiers vers celui-ci.

  • Modification du contrôle de version des exécutables CMake fournis avec Visual Studio pour qu’il corresponde aux versions de Kitware.

  • Ajout de la prise en charge de la fonction Rechargement à chaud au modèle de projet CMake.

  • Go To Definition for C++ utilise désormais un indicateur plus subtil de l’opération prenant plus de temps, en remplaçant la boîte de dialogue modale des versions précédentes.

  • Lancement d’une expérience fournissant des résultats plus pertinents dans la liste dans l’autocomplétion C++ et la liste des membres. Cette fonctionnalité s’appelait auparavant IntelliSense prédictif, mais utilise désormais une nouvelle méthode de présentation.

  • Nous fournissons désormais un ensemble d’outils Arm64 Clang natif avec notre charge de travail LLVM, ce qui permet la compilation native sur les machines Arm64.

  • Ajout de la localisation à l’extension Image Watch (cette extension est disponible sur la Place de marché et n’est pas fournie via Visual Studio Installer).

  • Ajout de la prise en charge de l’ouverture d’une fenêtre de terminal dans le conteneur de développeur en cours d’exécution.

  • Intégration de plusieurs améliorations à l’expansion macro IntelliSense. Nous avons notamment activé l'expansion récursive dans un plus grand nombre de contextes et ajouté des options à la fenêtre contextuelle pour copier l'expansion dans le presse-papiers ou développer la macro en ligne.

  • La surveillance simultanée est désormais prise en charge dans le moniteur série. La surveillance simultanée vous permet de surveiller plusieurs ports à la fois, côte à côte. Appuyez sur le bouton Plus pour ouvrir un autre moniteur série et commencer à travailler.

  • Vous pouvez désormais visualiser les propriétés des classes de base modifiées dans une ressource Unreal Blueprint sans quitter Visual Studio. Double-cliquez sur une référence de Blueprint pour une classe ou une propriété C++ afin d’ouvrir l'inspecteur de ressources UE dans Visual Studio.

  • Activation de l’exécution de DevContainers sur une machine Linux distante.

  • Sélection de plusieurs cibles à générer dans la vue Cibles CMake.

  • Ajout de la prise en charge de CMakePresets.json version 5. Consultez la documentation CMake pour plus d’informations sur les nouvelles fonctionnalités.

  • Activation de l’Explorateur de tests pour générer et tester plusieurs cibles CMake en parallèle.

  • Ajout de l’option « Ouvrir un conteneur dans le terminal » aux conteneurs de développement.

  • Fonctionnalités de bibliothèque standard implémentées :

    • P2508R1 basic_format_string, format_string, wformat_string
    • P2322R6 ranges::fold_left, ranges::fold_right, etc.
    • P2321R2 views::zip ( n’inclut ni zip_transform, ni adjacent ni adjacent_transform)

Nouveautés de C++ dans Visual Studio version 17.4

Publication : novembre 2022

Pour plus d'informations sur Consultez
Nouveautés pour les développeurs C++ Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.4
La bibliothèque standard (STL) a fusionné les fonctionnalités C++23, les résolutions de problèmes LWG, les améliorations des performances, le comportement amélioré et les bogues corrigés Journal des modifications STL 17.4
Nouvelles fonctionnalités de l’IDE Visual Studio 17.4 Notes de publication de Visual Studio 2022 version 17.4
Améliorations de la conformité de C++ dans Visual Studio 2022 17.4 Améliorations de la conformité de C++, changements de comportement et correctifs de bogues dans Visual Studio 2022

Liste partielle des nouvelles fonctionnalités dans la version 17.4 :

  • Amélioration des messages d’erreur du compilateur pour fournir des informations plus correctes et utiles, en particulier pour les concepts.

  • Ajout de l’option MSVC expérimentale /experimental:log<directory> pour générer des diagnostics SARIF structurés dans le répertoire spécifié.

  • Ajout de la prise en charge des attributs C23 à IntelliSense et progrès dans la prise en charge des modules C++20.

  • Amélioration des performances d’indexation lors de l’ouverture d’une nouvelle solution. Les grands projets pourraient voir une amélioration de 20 à 35 % par rapport à la version 17.3.

  • Amélioration de l’optimisation de la valeur de retour nommée (NRVO) :

    • NRVO est activée pour les cas qui impliquent la gestion d’exceptions ou des boucles.
    • NRVO est activée même sous /Od si l’utilisateur passe l’option /Zc:nrvo, ou /std:c++20 ou ultérieure, ou /permissive-.
    • Vous pouvez désormais désactiver NRVO avec l’option /Zc:nrvo-.
  • Mise à niveau de la version de LLVM fournie avec Visual Studio vers 15.0.1. Pour plus d’informations sur ce qui est disponible, consultez les notes de publication de LLVM et Clang.

  • Ajout de la prise en charge de Visual Studio pour les artefacts vcpkg avec des projets CMake. Pour les projets qui incluent un manifeste vcpkg, l’environnement est activé automatiquement à l’ouverture du projet. Pour en savoir plus sur cette fonctionnalité, consultez le billet de blog vcpkg environment activation in Visual Studio.

  • Vous pouvez désormais utiliser des conteneurs de développement pour vos projets C++. Pour en savoir plus sur cette fonctionnalité, consultez notre billet de blog Dev Containers for C++.

  • IntelliSense respecte désormais l’ordre des en-têtes pré-inclus lorsque l’un d’entre eux est un PCH. Auparavant, lorsqu’un PCH était utilisé via /Yu et inclus de force via /FI, IntelliSense le traitait toujours en premier, avant tout autre en-tête inclus via /FI. Ce comportement ne correspondait pas au comportement de build. Avec cette modification, les en-têtes /FI sont traités dans l’ordre dans lequel ils sont spécifiés.

  • Suppression de préfixes internes des noms CTest dans l’Explorateur de tests.

  • Mise à jour de la version de CMake fournie avec Visual Studio vers la version 3.24.1. Pour plus d’informations sur ce qui est disponible, consultez les Notes de publication de CMake.

  • Mise à jour d’Android SDK :

    • Les scripts Ant ont été supprimés, de sorte que les utilisateurs ne verront plus les modèles Ant dans la boîte de dialogue Nouveau projet. Pour obtenir de l’aide sur la migration de modèles Ant vers des modèles Gradle, consultez Migration de builds à partir d’Apache Ant
    • Ajout de la prise en charge de la génération avec NDK 23 et 24
    • Mise à jour du composant NDK vers le LTS version 23
  • Ajout d’implémentations vectorisées de ranges::min_element(), ranges::max_element() et ranges::minmax_element()

  • Nous continuons à suivre les derniers développements en matière de normalisation C++. La prise en charge de ces fonctionnalités C++23 est disponible en incluant /std:c++latest dans les options de votre compilateur :

    • P2302R4 ranges::contains, ranges::contains_subrange

    • P2499R0 string_view le constructeur de plage doit être explicit

    • P0849R8 auto(x) : decay-copy dans le langage

      (La partie compilateur n’est pas encore implémentée. La partie bibliothèque a été implémentée en mode C++20 lors de l’implémentation initiale de la prise en charge des plages.)

    • P0881R7 <stacktrace>

    • P2301R1 Ajouter un alias de pmr pour std::stacktrace

    • P1328R1 constexpr type_info::operator==()

    • P2440R1 ranges::iota, ranges::shift_left, ranges::shift_right

    • P2441R2 views::join_with

  • Ajout d’une option « Navigation après la création d’une déclaration/définition » pour vous permettre de choisir le comportement de navigation de la fonctionnalité Créer la déclaration/la définition. Vous pouvez choisir entre l’aperçu (par défaut) ou l’ouverture du document, voire aucune navigation.

  • Les builds Arm64 de Visual Studio regroupent désormais les versions Arm64 de CMake et Ninja.

  • Ajout de la prise en charge de CMake Presets version 4. Pour plus d’informations sur ce qui est disponible, consultez les Notes de publication de CMake.

  • Les connexions système à distance utilisant le Gestionnaire de connexions prennent désormais en charge SSH ProxyJump. ProxyJump est utilisé pour accéder à un hôte SSH via un autre hôte SSH (par exemple, pour accéder à un hôte derrière un pare-feu).

Nouveautés de C++ dans Visual Studio version 17.3

Publication : août 2022

Pour plus d'informations sur Consultez
Nouveautés pour les développeurs C++ Améliorations de C++ dans la version 17.3
La bibliothèque standard (STL) a fusionné les fonctionnalités C++23, les résolutions de problèmes LWG, les améliorations des performances, le comportement amélioré et les bogues corrigés Journal des modifications STL 17.3
Nouvelles fonctionnalités de l’IDE Visual Studio 17.3 Notes de publication sur Visual Studio 2022 version 17.3
Améliorations de la conformité du langage C++ dans Visual Studio 2022 17.3 Améliorations de la conformité de C++, changements de comportement et correctifs de bogues dans Visual Studio 2022

Liste partielle des nouvelles fonctionnalités dans la version 17.3 :

  • La chaîne d’outils Arm64EC n’est plus marquée comme expérimentale. Elle est prête pour être utilisée en production.
  • Le terminal Visual Studio peut désormais être utilisé en tant que client SSH avec vos connexions SSH stockées. Une fois les outils C++ pour Linux installés, ouvrez la fenêtre de l’outil Terminal. La liste déroulante Terminal est remplie avec vos connexions stockées. Lorsque vous sélectionnez une connexion, une nouvelle fenêtre de Terminal s’ouvre dans Visual Studio, qui affiche un pseudo-terminal sur votre système distant. Les caractères de contrôle, les couleurs et la reconnaissance de la position du curseur sont tous pris en charge.
  • Visual Studio peut désormais ajouter des modèles de classe Unreal Engine pour vos projets UE. Pour essayer cette fonctionnalité, vérifiez que Prise en charge de l’IDE pour Unreal Engine est sélectionné dans la charge de travail Développement de jeux en C++ dans Visual Studio Installer. Lorsque vous travaillez sur un projet UE, cliquez avec le bouton droit dans le projet ou un dossier/filtre, puis sélectionnez Ajouter>Classe UE.
  • Atteindre la définition mémorise maintenant la signature précédente et navigue en conséquence lorsqu’une meilleure correspondance n’est pas disponible (par exemple, après que vous avez modifié manuellement la signature de l’une des paires). La réactivité de Atteindre tout a été améliorée. Auparavant, les résultats s’affichaient une fois que vous cessiez de taper. Dans la nouvelle expérience, les résultats s’affichent à mesure que vous tapez.
  • Dans les contextes nécessitant une saisie semi-automatique de type enum (par exemple, affectations à des variables enum, étiquettes de casse, type de enum retournant, etc.), la liste de saisie semi-automatique est désormais filtrée uniquement sur les énumérateurs correspondants et les constructions associées.
  • Ajout de la prise en charge de NuGet PackageReference pour les projets MSBuild C++/CLI ciblant .NET Core. Cette modification a été apportée pour débloquer les bases de code mixtes de la possibilité d’adopter .NET Core. Cette prise en charge ne fonctionne pas pour les autres types de projets C++ ou les types de projets C++ ciblant .NET Framework. Il n’est pas prévu d’étendre la prise en charge de PackageReference à d’autres scénarios C++. L’équipe travaille sur des expériences distinctes impliquant vcpkg, adaptées aux scénarios non MSBuild et offrant une plus grande fonctionnalité.
  • Ajout d’une fenêtre Moniteur série pour le développement incorporé, disponible via Débogage>Windows>Moniteur série.
  • Amélioration de l’indexation C++ d’environ 66 % par rapport à la version 17.2.
  • Mise à jour de la version de CMake fournie avec Visual Studio vers la version 3.23. Pour plus d’informations sur ce qui est disponible, consultez les Notes de publication de CMake 3.23.
  • Mise à niveau des versions des outils LLVM fournis avec Visual Studio vers v14. Pour plus d’informations sur ce qui est disponible, consultez les notes de publication de LLVM et Clang.
  • Mise à jour de l’ensemble d’outils Dev 16.11 C++ côte à côte vers la version 14.29.30145.00. La dernière version de l’ensemble d’outils Dev 16.11 C++ contient des correctifs de bogues importants, dont la correction de tous les rapports de défauts C++20 restants. Pour plus d’informations sur les correctifs de bogues, notamment les rapports de défauts C++20 dans Dev 16.11, consultez les Notes de publication de Visual Studio 2019 version 16.11.14.
  • Nous avons apporté diverses améliorations à l’expérience dans l’éditeur des modules C++. Nous travaillons continuellement à l’amélioration de la qualité de l’expérience, mais vous encourageons à l’essayer dans la version 17.3. Signalez les problèmes restants via Developer Community.

Nouveautés de C++ dans Visual Studio version 17.2

Publication : mai 2022

Pour plus d'informations sur Consultez
Nouveautés pour les développeurs C++ Visual Studio 2022 17.2 is now available
La bibliothèque standard (STL) a fusionné les rapports de défaut C++20, les fonctionnalités C++23, les résolutions de problèmes LWG, les améliorations des performances, le comportement amélioré et les bogues corrigés Journal des modifications STL 17.2
Nouvelles fonctionnalités de l’IDE Visual Studio 17.2 Notes de publication Visual Studio 2022 version 17.2
Améliorations de la conformité du langage C++ dans Visual Studio 2022 17.2 Améliorations de la conformité de C++, changements de comportement et correctifs de bogues dans Visual Studio 2022

Liste partielle des nouvelles fonctionnalités dans la version 17.2 :

  • Ajout de la prise en charge du compilateur pour la fonctionnalité C++23 déduisant this, disponible sous l’option /std:c++latest.
  • Ajout de la prise en charge d’IntelliSense pour les fonctionnalités C++23 déduisant this et if consteval.
  • Ajout de la prise en charge du nom de paramètre inline et de l’indicateur de type, activé en appuyant sur Alt+F1 ou en appuyant deux fois Ctrl. Ce comportement peut être personnalisé sous Outils > Options > Éditeurs de texte > C/C++ > IntelliSense.
  • Ajout de la prise en charge expérimentale des modules C++20 dans les projets CMake. Cette prise en charge est actuellement disponible uniquement avec le générateur Visual Studio (MSBuild).
  • Dans la version 17.1, nous avons introduit les vues de registre de périphériques et RTOS pour les développeurs incorporés. Nous continuons d’améliorer les fonctionnalités de ces vues avec des améliorations de la facilité d’utilisation dans la version 17.2 :
    • La fenêtre de l’outil RTOS est désormais masquée par défaut. Elle empêche l’affichage d’une fenêtre d’outil avec des messages d’erreur qui ne sont pas pertinents lorsque vous n’utilisez pas de RTOS.
    • Lorsque vous double-cliquez sur un objet RTOS dans la fenêtre d’outil, une montre s’affiche pour l’objet.
    • Lorsque vous sélectionnez les valeurs de début et de fin pour le pointeur de pile dans la fenêtre d’outil RTOS, il s’ouvre dans la fenêtre mémoire.
    • Ajout de la reconnaissance des threads pour les cibles d’appareil à la fenêtre Pile des appels.
    • Les utilisateurs peuvent maintenant sélectionner une icône d’épingle en regard de périphériques, de registres ou de champs pour les épingler en haut de la vue périphérique.
  • Ajout d’implémentations des rapports de défauts C++20 restants (également appelés rétroportages). Toutes les fonctionnalités C++20 sont désormais disponibles sous l’option /std:c++20. Pour plus d’informations sur les rétroportages implémentés, consultez le Projet Rapports de défauts C++20 dans le dépôt GitHub Microsoft/STL et le billet de blog MSVC’s STL Completes /std:c++20.
  • Nous avons ajouté diverses fonctionnalités de bibliothèque C++23, disponibles sous l’option /std:c++latest. Pour plus d’informations sur les nouvelles fonctionnalités, consultez le journal des modifications du référentiel STL.
  • Amélioration des performances de l’indexation C++ initiale jusqu’à 20 %, en fonction de la profondeur du graphique include.

Nouveautés de C++ dans Visual Studio version 17.1

Publication : février 2022

Pour plus d'informations sur Consultez
Nouveautés pour les développeurs C++ Visual Studio 2022 17.1 est désormais disponible
La bibliothèque standard (STL) a fusionné les fonctionnalités C++23, les résolutions de problèmes LWG, les améliorations des performances, le comportement amélioré et les bogues corrigés Journal des modifications STL 17.1
Nouvelles fonctionnalités de l’IDE Visual Studio 17.1 Notes de publication Visual Studio 2022 version 17.1
Améliorations de la conformité du langage C++ dans Visual Studio 2022 17.1 Améliorations de la conformité de C++, changements de comportement et correctifs de bogues dans Visual Studio 2022

Liste partielle des nouvelles fonctionnalités dans la version 17.1 :

  • Un nouveau modèle Configurer la présélection est ajouté pour configurer et générer des projets CMake sur un système macOS distant avec CMakePresets.json. Vous pouvez également lancer des cibles CMake sur un système macOS distant, puis déboguer à distance dans le débogueur Visual Studio adossé à GDB ou LLDB.
  • Vous pouvez maintenant déboguer des vidages principaux sur un système macOS distant à partir de Visual Studio avec LLDB ou GDB.
  • Les versions de Clang et LLVM livrées avec Visual Studio sont mises à niveau vers v13.
  • L’intégration CMake de Visual Studio n’est active que lorsqu’un CMakeLists.txt est identifié à la racine de l’espace de travail ouvert. Si un CMakeLists.txt est identifié à un autre niveau de l’espace de travail, vous êtes invité à activer l’intégration CMake de Visual Studio avec une notification.
  • Nouvelles vues qui vous permettent d’inspecter et d’interagir avec des registres périphériques sur des microcontrôleurs et des objets RTOS (Real Time Operating Systems), disponibles via Débogage>Windows>Registres intégrés
  • Ajout d’une nouvelle vue de thread pour les projets RTOS, disponible via Déboguer>Windows>Objets RTOS. Pour plus d’informations, consultez Développement logiciel incorporé dans Visual Studio.

Nouveautés de C++ dans Visual Studio version 17.0

Publication : novembre 2021

Pour plus d'informations sur Consultez
Nouvelles fonctionnalités de l’IDE Visual Studio 17.0 Notes de publication Visual Studio 2022 version 17.0
La bibliothèque standard (STL) a fusionné les fonctionnalités C++23 et C++26, les rapports de défautS C++20, les résolutions de problèmes LWG, les améliorations des performances, le comportement amélioré et les bogues corrigés Journal des modifications STL 17.0
Améliorations de la conformité du langage C++ dans Visual Studio 2022 17.0 Améliorations de la conformité de C++, changements de comportement et correctifs de bogues dans Visual Studio 2022 17.10

Vue d’ensemble de certaines des nouvelles fonctionnalités de Visual Studio 2022 version 17.0 :

  • L’IDE Visual Studio, devenv.exe, est désormais une application 64 bits native.
  • L’ensemble d’outils MSVC utilise désormais par défaut le hachage source SHA-256 dans les enregistrements de débogage. Auparavant, l’ensemble d’outils utilisait MD5 pour le hachage source par défaut.
  • Les outils de génération v143 sont désormais disponibles via le programme d’installation de Visual Studio et dans les outils de génération autonomes.

Rechargement à chaud pour C++ natif

  • Le Rechargement à chaud pour C++ permet d’apporter de nombreux types de modifications de code à votre application en cours d’exécution, et de les appliquer sans avoir à interrompre l’exécution de l’application avec quelque chose comme un point d’arrêt.

Dans Visual Studio 2022, lorsque vous démarrez votre application dans le débogueur, vous pouvez utiliser le bouton Rechargement à chaud pour la modifier pendant qu’elle est toujours en cours d’exécution. Cette expérience est optimisée par la fonction native Modifier et continuer. Pour plus d’informations sur les modifications prises en charge, consultez Modifier et Continuer pour (C++).

  • Le Rechargement à chaud prend en charge les projets CMake et Open Folder.

Prise en charge de WSL2

  • Vous pouvez maintenant générer et déboguer en mode natif sur WSL2 sans établir de connexion SSH. Les projets CMake multiplateformes et les projets Linux MSBuild sont pris en charge.

Prise en charge améliorée de CMake

  • Mise à niveau de la version de CMake livrée avec Visual Studio vers la version 3.21. Pour plus d’informations sur ce qui est disponible dans cette version, consultez les Notes de publication de CMake 3.21.

  • Les pages de vue d’ensemble de CMake sont mises à jour pour prendre en charge CMakePresets.json.

  • Vous pouvez maintenant configurer et générer vos projets CMake avec CMake 3.21 et CMakePresets.json v3.

  • Visual Studio prend désormais en charge l’option buildPresets.targets dans CMakePresets.json. Cette option vous permet de créer un sous-ensemble de cibles dans votre projet CMake.

  • Le menu Projet dans les projets CMake est simplifié et expose les options « Supprimer le cache et reconfigurer » et « Afficher le cache ».

  • Implémentation de l’option de compilateur /scanDependencies pour répertorier les dépendances de module C++20 pour les projets CMake, comme décrit dans P1689R5. Il s’agit d’une étape vers la prise en charge de la création de projets basés sur des modules avec CMake, et nous travaillons à finaliser cette prise en charge dans les versions ultérieures.

Améliorations apportées à la bibliothèque standard

Les améliorations de la bibliothèque standard (STL) sont mises en évidence ici. Pour obtenir une liste complète des nouvelles fonctionnalités, des modifications, des correctifs de bogues et des améliorations des performances, consultez le Journal des modifications de l’équipe STL.

  • Ajout de visualiseurs de débogage pour améliorer l’affichage des types suivants : source_location, bind_front(), u8string (et ses itérateurs), default_sentinel_t, unreachable_sentinel_t, ranges::empty_view, ranges::single_view, ranges::iota_view (et son itérateur/sentinelle), ranges::ref_view, thread, thread::id, jthread et filesystem::path
  • Ajout de [[nodiscard]] à la famille de fonctions stoi() dans <string> et à diverses fonctions dans <locale>, telles que les fonctions membres collate, has_facet() et les familles isalnum() et tolower().
  • P0980R1 a réalisé std::string constexpr dans VS 2019 16.10. Désormais pris en charge pour Clang.
  • P1004R2 Made std::vector constexprin VS 2019 16.10. Désormais pris en charge pour Clang.

Fonctionnalités C++23 mises en évidence

  • P1048R1 Ajout de is_scoped_enum, nouvelle caractéristique pour la bibliothèque C++ Standard, qui détecte si un type est une énumération délimitée.
  • P1132R7 out_ptr(), inout_ptr()
  • P1679R3 contains() Pour basic_string et basic_string_view
  • P1682R3 to_underlying() pour les énumérations
  • P2162R2 Autoriser l’héritage de std::variant
  • P2166R1 Interdire la construction de basic_string et de basic_string_view à partir de nullptr. Cette modification est un changement cassant de source. Le code qui avait auparavant un comportement non défini au moment de l’exécution est maintenant rejeté avec des erreurs du compilateur.
  • P2186R2 Suppression de la prise en charge du garbage collection. Cette modification supprime declare_reachable, undeclare_reachable, declare_no_pointers, undeclare_no_pointers, get_pointer_safety. Auparavant, ces fonctions n’avaient aucun effet.

Améliorations des performances mises en évidence

  • <format> détecte maintenant lorsqu’il écrit dans un back_insert_iterator pour une basic_string ou un vector, et effectue un appel plus rapide de insert() à la end() du conteneur.
  • Nous avons amélioré les performances de std::find() et std::count() pour vector<bool> 19x et 26x (fois, pas pour cent).
  • Nous avons amélioré les performances de std::count() pour vector<bool>
  • std::byte a maintenant les mêmes performances que unsigned char dans reverse() et variant::swap()

Prise en charge de Clang et LLVM

  • Les outils LLVM fournis avec Visual Studio sont mis à niveau vers LLVM 12. Pour plus d’informations, consultez les Notes de publication de LLVM.

  • La prise en charge de Clang-cl a été mise à jour vers LLVM 12.

  • Vous pouvez maintenant déboguer des processus s’exécutant sur un système distant à partir de Visual Studio en utilisant LLDB.

C++ AMP déconseillé

  • Les en-têtes C++ AMP sont désormais déconseillés. L’inclusion de <amp.h> dans un projet C++ produit des erreurs de génération. Pour ignorer les erreurs, définissez _SILENCE_AMP_DEPRECATION_WARNINGS. Pour plus d’informations, consultez nos liens de dépréciation AMP.

Améliorations d’IntelliSense

  • Nous avons apporté des améliorations à IntelliSense C++ en lien avec la mise en évidence de la navigation et de la syntaxe pour les types à partir de modules et d’unités d’en-tête importés. IntelliSense est pour nous un domaine d’investissement actif. Aidez-nous à nous améliorer : partagez vos commentaires sur Developer Community en sélectionnant Aide>Envoyer des commentaires.
  • Nous avons amélioré les performances d’IntelliSense C++ en optimisant l’utilisation d’en-tête mis en cache et l’accès à la base de données de symboles, ce qui offre de meilleurs temps de chargement pour accéder à votre code.
  • Le Linter de code IntelliSense pour C++ est désormais activé par défaut, fournissant des suggestions instantanées pendant que vous-tapez, et des suggestions de correctif pour les défauts de code courants.
  • IntelliSense C++ pour les projets CMake fonctionne désormais lors de l’utilisation d’une présélection avec un nom d’affichage.

Mises à jour de la charge de travail C++

  • Mise à jour vers NDK r21 LTS dans la charge de travail Développement mobile C++.
  • La charge de travail Développement de jeux avec C++ installe désormais le moteur Unreal le plus récent avec prise en charge de Visual Studio 2022.

Améliorations apportées à l’analyse du code

  • L’analyse du code impose désormais que les valeurs de retour des fonctions annotées avec _Check_return_ ou _Must_inspect_result_ soient vérifiées.
  • La détection de déréférencement du pointeur null est améliorée dans nos outils d’analyse du code.
  • Ajout de la prise en charge de gsl::not_null l’analyse du code.
  • Prise en charge de Libfuzzer sous l’option du compilateur /fsanitize=fuzzer.

Notes de publication pour les versions antérieures

Des notes de publication pour les anciennes versions de C++ sont également disponibles :

Problèmes connus

C++ IntelliSense

Pour plus d’informations sur les autres problèmes ouverts et les solutions de contournement disponibles pour C++ dans Visual Studio 2022, consultez la liste des problèmes de Developer Community C++.

Commentaires et suggestions

Nous sommes à votre écoute. Vous pouvez signaler un problème ou suggérer une fonctionnalité en utilisant l’icône Envoyer des commentaires dans l’angle supérieur droit du programme d’installation ou de l’IDE Visual Studio, ou en sélectionnant Aide>Envoyer des commentaires. Vous pouvez suivre vos problèmes à l’aide de Visual Studio Developer Community, où vous ajoutez des commentaires ou cherchez des solutions. Vous pouvez également obtenir une aide gratuite pour l’installation via notre support Live Chat.

Blogs

Tirez parti des insights et des recommandations disponibles sur le site Microsoft Developer Blogs pour recevoir les dernières mises à jour des versions. Les blogs incluent des billets approfondis sur un vaste éventail de fonctionnalités. Le blog de l’équipe C++ et le blog Visual Studio vous intéresseront particulièrement.