Suite à son approbation technique finale le 4 septembre dernier par le comité ISO C++, le langage de programmation C++ 20 devrait être officiellement publié vers la fin de cette année. Les Modules et les Coroutines feront partie des nouvelles fonctionnalités du langage. Conçu en 1979 pour la programmation de systèmes, le C++ reste un langage essentiel. Pour preuve, il a connu la croissance la plus rapide dans l'indice Tiobe de septembre 2020, où il se classe en quatrième position derrière les langages C, Java et Python. Selon l’indice Tiobe, la spécification C++ 20 a certainement donné un coup d’accélérateur au langage.

Parmi les fonctionnalités à venir du langage C++ 20, on peut citer :

- Les Modules : ils vont permettre aux programmeurs d'utiliser des composants modulaires.

- Les Concepts : ils vont servir à spécifier les exigences des modèles et à supporter la programmation générique. Les Concepts promettent d'améliorer la qualité du code.

- Une bibliothèque de synchronisation : elle doit permettre une prise charge plus fine du contrôle du hardware.

- Des améliorations dans le traitement du temps de compilation.

- Les Coroutines : généralisent l’utilisation des sous-routines en multitâche non préventive. Cependant, la prise en charge standard des Coroutines dans la bibliothèque standard fait toujours défaut. Ce support est prévu pour la version C++ 23.

- Les Ranges : ces composants permettent de traiter des plages d'éléments.

- Les macros de test de fonctionnalités : cet ensemble de macros permet de communiquer avec les fonctionnalités du langage et de la bibliothèque à partir du C++ 11 et au-delà.

- Des valeurs de hachage précalculées au moment de la recherche.

- Des déclarations d'extension : elles doivent permettre la répétition du temps de compilation d'une déclaration pour chaque élément de tuple, de tableau, de classe, de pack de paramètres ou de range.

- Des opérations monadiques pour std::optionalcode.

- La création implicite d'objets pour la manipulation de bas niveau.

- Une amélioration de la reconnaissance contextuelle de l'importation et du Module pour aider les outils de non compilation à déterminer les dépendances de build.

- De nouveaux algorithmes de télémétrie.

Une capacité de Contrats qui était prévue pour le C++ 20, pour spécifier les conditions préalables, les conditions postérieures et les assertions, a été supprimée. Les Contrats sont désormais marqués comme élément du C++ 23, mais il n’est pas certain qu’ils seront prêts à figurer dans cette version.