Nouveau standard C++ : changements clés dans la dernière version

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Une nouvelle version de C++ est sortie : ce qui a changé dans le langage de programmation



Le comité international de normalisation C++ (ISO/IEC JTC1/SC22/WG21) a officiellement approuvé la dernière version du standard — C++23. Cette version apporte des améliorations tant attendues qui rendent le langage plus sûr, plus expressif et plus pratique pour le développement de logiciels système et applicatifs. Nous vous présentons les innovations les plus significatives.



Principaux changements dans C++23



1. std::print — sortie formatée sans effort superflu

L'une des fonctionnalités les plus remarquables est l'apparition de la fonction std::print. Désormais, pour afficher dans le flux standard, il n'est plus nécessaire d'écrire des constructions lourdes avec std::cout ou d'utiliser printf avec un risque d'erreurs de type. std::print fonctionne sur la base de std::format, garantissant la sécurité des types et la lisibilité :

  • Formatage automatique des nombres, chaînes et types personnalisés.
  • Prise en charge des locales et d'Unicode.
  • Vitesse proche de printf, mais sans fuites mémoire.


2. Gestion améliorée des coroutines

Les coroutines, apparues pour la première fois en C++20, ont reçu plusieurs corrections et ajouts. En C++23, la syntaxe de déclaration des fonctions asynchrones a été simplifiée, et la prise en charge de std::generator a été ajoutée — un nouveau type pour créer des séquences de valeurs à la volée :

  • Les générateurs permettent d'écrire des calculs paresseux sans gestion manuelle de l'état.
  • La quantité de code passe-partout pour travailler avec les coroutines a été réduite.


3. Modules — stabilité et performance

Bien que les modules aient été introduits en C++20, leur implémentation dans les compilateurs laissait à désirer. Dans le nouveau standard, les règles d'exportation et d'importation ont été clarifiées, ce qui a conduit à :

  • Une réduction du temps de compilation des grands projets de 2 à 3 fois.
  • Une compatibilité totale avec les fichiers d'en-tête (mode hybride).
  • La possibilité de créer des modules pour la bibliothèque standard (expérimental).


4. Nouvelles possibilités de constexpr et consteval

L'extension du contexte des expressions constantes est l'un des principaux objectifs du développement de C++. En C++23, constexpr est autorisé pour :

  • L'allocation dynamique de mémoire (std::vector et std::string).
  • L'appel de fonctions virtuelles.
  • Le travail avec des nombres à virgule flottante sans perte de précision.

Cela permet d'effectuer de plus en plus de calculs à l'étape de compilation, accélérant ainsi l'exécution.



5. Attribut [[assume]] — indications pour l'optimiseur

Le nouvel attribut [[assume(expression)]] indique au compilateur que l'expression est vraie à ce point du code. Cela permet :

  • Des optimisations plus agressives (suppression de branchements, déroulage de boucles).
  • Une amélioration des performances dans les sections critiques (moteurs de jeux, embarqué).


6. Simplification du multithreading

De nouveaux types de synchronisation ont été ajoutés : std::counting_semaphore avec des performances améliorées et std::latch pour les barrières à usage unique. De plus, la prise en charge de std::mdspan

Recommended Libraries