Récemment, Microsoft a annoncé que la version 17.13 de Visual Studio 2022 est désormais disponible. Selon Microsoft, cette mise à jour se concentre sur la stabilité et la sécurité, ainsi que sur des améliorations continues pour tous les développeurs utilisant Visual Studio. Voici les nouveautés pour les développeurs C++Bibliothèque standard et compilateur
Du côté du compilateur, Microsoft a implémenté le suffixe littéral size_t de C++23. Le suffixe uz ou UZ (ou n'importe quelle permutation de ceux-ci) vous aidera à éviter les troncatures sournoises ou les erreurs de comparaison signée, en particulier lors de l'écriture de boucles.
Exemple :
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | //Infinite loop if v.size > max unsigned int
for (auto i = 0u; i < v.size(); ++i) {
//Use v and v[i]
}
//Fine due to uz literal
for (auto i = 0uz; i < v.size(); ++i) {
//Use v and v[i]
} |
Notez que, bien que cette fonctionnalité soit disponible dans le compilateur MSVC, elle n'est pas encore prise en charge dans le compilateur EDG qui alimente IntelliSense, de sorte que vous pouvez voir des gribouillis rouges dans votre éditeur jusqu'à ce que la prise en charge soit ajoutée.
En outre, cette version apporte plusieurs améliorations de la bibliothèque standard.
La fonctionnalité std::generator apporte le support tant attendu de la bibliothèque standard pour les coroutines.
Exemple :
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | std::generator<int> fib() {
auto a = 0, b = 1;
while (true) {
co_yield std::exchange(a, std::exchange(b, a + b));
}
}
int answer_to_the_universe() {
auto rng = fib() | std::views::drop(6) | std::views::take(3);
return std::ranges::fold_left(std::move(rng), 0, std::plus{});
} |
Toujours dans le domaine de la conformité, deux documents ont été implémenté pour améliorer les performances de std::print.
Cette version améliore le débit de construction de <queue>, <stack>, <stacktrace> et <thread> en n'incluant pas tout <format>. Pour la même raison, ils ont déplacé system_clock, high_resolution_clock et chrono_literals d'un en-tête interne couramment inclus vers <chrono>. Cela a un impact sur la rupture des sources. Si vous voyez des erreurs de compilation se plaignant de ne pas reconnaître des types de chrono comme system_clock ou des UDL comme 1729ms, vous devez inclure <chrono> spécifiquement, au lieu de supposer que des en-têtes comme <thread> le feront glisser.
Microsoft a également poursuivi son travail d'amélioration de la vectorisation dans la bibliothèque standard. Cette version est accompagnée d'améliorations pour les types et fonctions suivants :
- (ranges::)find_end
- basic_string::(r)find
- adjacent_difference
- bitset
- basic_string::find_last_of
- (ranges::)remove
Productivité C++
Mises à jour de l'intégration Unreal Engine
Microsoft a effectué une série de mises à jour pour l'intégration d'Unreal Engine dans Visual Studio :
- ils ont ajouté deux nouvelles options dans Outils > Options qui vous permettent de spécifier Code Analysis with Unreal Header Tool pour les fichiers d'en-tête et les fichiers source. Pour améliorer les performances, l'analyse des fichiers source est désactivée par défaut.
- Vous pouvez désormais spécifier des dossiers publics et privés lorsque vous utilisez l'assistant d'ajout de classe, ce qui garantit que vos classes sont créées dans la structure de dossier correcte.
Paramètres du projet de prévisualisation C++23
Vous pouvez désormais activer un aperçu de l'implémentation C++23 dans Visual C++ directement à partir des paramètres de votre projet ! Ce nouveau paramètre permet d'accéder aux dernières fonctionnalités implémentées dans le standard C++23. Comme il s'agit d'une prévisualisation des fonctionnalités C++23, ces nouvelles fonctionnalités auront un support limité et pourront être modifiées dans les prochaines versions.
Nouveaux paramètres de la page des propriétés de génération de code pour x86 et x64
Propriété de longueur de vecteur : Configurez la longueur des vecteurs pour la génération de code sur x86 et x64 directement dans les paramètres de votre projet C++ en allant dans Propriétés de configuration > C/C++ > Génération de code.
Prise en charge d'AVX10.1 : Débloquez la puissance d'AVX10.1 avec une nouvelle entrée dans Enable Enhanced Instruction Set, en ajoutant le drapeau /arch:AVX10.1 à vos constructions.
Prise en charge des préréglages CMake v9
Visual Studio prend désormais en charge les préréglages CMake v9. Cette dernière version des presets CMake introduit plusieurs versions documentées d'expansions de macros dans le champ include d'un preset.
Spécification des paramètres de délai d'attente Linux pour C++
Microsoft a ajouté la prise en charge de la spécification d'un délai d'attente minimum pour vos machines distantes auxquelles vous êtes connecté via le gestionnaire de connexions dans Visual Studio.
Vous pouvez spécifier le délai d'attente dans l'invite de commande de Visual Studio, en utilisant la nouvelle propriété MinTimeoutSeconds. Par exemple, pour définir le délai d'attente à 1 minute, vous pouvez utiliser la commande suivante :...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.
