Génial C++ moderne
Une collection de ressources sur le C++ moderne.
L’objectif est de collecter une liste de ressources pour aider les gens à découvrir et à exploiter le C++ 11 moderne et au-delà.
Contribuer
Pour ajouter, supprimer ou modifier des éléments sur la liste : veuillez soumettre une pull request au référentiel GitHub.
Livres
- Une visite guidée du C++ (Bjarne Stroustrup) [C++17/11/20]
- Le langage de programmation C++ (Bjarne Stroustrup) [C++11]
- C++ moderne efficace (Scott Meyers) [C++11/14]
- Présentation du nouveau C++ (Scott Meyers) [C++11/14]
- Lignes directrices de base C++ (Bjarne Stroustrup, Herb Sutter) [C++11/14/17] - Lignes directrices pour l'utilisation du C++ moderne.
- C++ Concurrency in Action (Anthony Williams) [C++14/11/17] - Référence et guide pour l'écriture de code multithread avec le C++ standard.
- C++17 - Le guide complet (Nicolai M. Josuttis) [C++17] - Donner des conseils sur la façon d'utiliser les fonctionnalités du langage et de la bibliothèque de C++17.
- Professional CMake (Craig Scott) - Un guide pratique pour utiliser CMake pour créer vos projets C++.
- Tutoriel C++ moderne : C++ 14/11/17/20 On the Fly (Changkun Ou) - Le livre prétend être "On the Fly". Son objectif est de fournir une introduction complète aux fonctionnalités pertinentes du C++ moderne (avant les années 2020).
Pour un guide complet des livres C++, consultez le Guide et la liste des livres Stackoverflow Definitive C++.
Communauté
Retrouvez les dernières actualités et mises à jour C++ :
- Actualités, statut et discussion sur le standard C++.
Écoutez les derniers podcasts C++ :
- CppCast (YouTube, Twitter) - Le premier podcast réalisé par des développeurs C++ pour les développeurs C++ !
- Cpp.chat (YouTube, Twitter) - Commentaires sur le C++ et questions d'intérêt pour les programmeurs C++.
- C++ Weekly – Vidéos éducatives de Jason Turner.
Lisez les dernières propositions de normes C++ :
- Documents du comité des normes C++.
Discutez de tout ce qui concerne le C++ :
- r/cpp - Le sous-reddit C++.
- C++ Slack - L'espace de travail C++ Slack.
- Groupe CoreHard Telegram.
Posez vos questions C++ :
- r/cpp_questions - Un subreddit pour les questions et réponses C++.
- Stackoverflow C++ / C++11 / C++14 / C++17 / C++20 - Questions Stackoverflow sur C++.
Peut-être que votre question a déjà trouvé une réponse dans une FAQ ? :
- Super-FAQ C++.
- FAQ C++11.
Assistez à l'une des nombreuses conférences C++ :
- Liste des conférences C++ à venir et passées.
Rechercher des groupes d'utilisateurs C++ :
- Réunion de la liste C++ des groupes d'utilisateurs.
- Liste des groupes d'utilisateurs dans la Super-FAQ C++.
- Rencontres C/C++.
- Recherchez les chaînes commençant par
#ug
dans Slack C++.
Pourparlers
TODO organise une liste de bonnes discussions sur la façon de simplifier le code à l'aide des fonctionnalités C++ 11/17/20
Commencez par SG20 Education et les vidéos recommandées pour l’enseignement du C++.
- CppCon Talks - Présentations de la conférence C++.
- CppCon 2014 : Bjarne Stroustrup « Simplifiez les tâches simples ! »
- CppCon 2014 : Herb Sutter « Programmation sans verrouillage (ou jonglerie avec des lames de rasoir), partie I »
- CppCon 2014 : Herb Sutter « Programmation sans verrouillage (ou jonglerie avec des lames de rasoir), partie II »
- CppCon 2014 : Scott Meyers « Déduction de type et pourquoi vous vous en souciez »
- CppCon 2015 : Bjarne Stroustrup « Écrire du bon C++14 »
- CppCon 2015 : Herb Sutter « Écrire du bon C++14... par défaut »
- CppCon 2016 : Chandler Carruth « Garbage In, Garbage Out : argumenter sur un comportement indéfini... »
- CppCon 2016 : Herb Sutter « Sans fuite en C++... par défaut. »
- CppCon 2017 : Jason Turner "C++17 pratique"
- CppCon 2018 : Jonathan Boccara « 105 algorithmes STL en moins d'une heure »
- code::dive conference 2014 - Scott Meyers : Caches CPU et pourquoi vous vous en souciez (diapositives)
- code::dive conférence 2015 - Andrei Alexandrescu - Écrire Fast Code I (slides)
- code::dive conférence 2015 - Andrei Alexandrescu - Writing Fast Code II (slides)
- C++Now Talks - Présentations de la conférence C++Now.
- Going Native 2012 : les modèles Variadic sont Funadic
- Going Native 2013 : Stephan T Lavavej - "N'aidez pas le compilateur"
- Going Native 2013 : Sean Parent - "Assaisonnement C++"
Blogues
- Blog C++ d'Andrzej - Lignes directrices et réflexions sur le C++.
- Le blog d'Anthony Williams
- Intégré au milieu universitaire - John Regehr, professeur d'informatique, Université de l'Utah, États-Unis.
- Éric Niebler
- C++ courant - Code expressif en C++.
- Gourou de la semaine (nouveaux articles) - Une série régulière de problèmes de programmation C++ créés et écrits par Herb Sutter.
- Gourou de la semaine (articles plus anciens) – Articles plus anciens du gourou de la semaine.
- Les réflexions C++ de Marshall
- Le blog de Paul Fultz II
- Pressing sur la programmation
- Simplifiez le C++ - Écrivez du C++ propre et maintenable.
- Sticky Bits - Un blog consacré au développement de logiciels pour les systèmes temps réel et embarqués.
- Sutter's Mill - Herb Sutter sur le développement de logiciels.
- La vue d'Aristeia - Activités et intérêts professionnels de Scott Meyers.
- Blog de l'équipe Visual C++
- Pourquoi un corbeau ressemble-t-il à un bureau ?
Sites Web
- Meilleures pratiques C++ - Collection collaborative des meilleures pratiques C++.
- Modèles C++ - Un référentiel de modèles C++ modernes.
- Référence C++ - Référence C++.
- C++ par l'exemple - Apprenez le C++ par l'exemple !
Modèles de démarrage de projet
- ModernCppStarter - Un modèle pour démarrer des projets C++ modernes en utilisant CMake, CI, la couverture de code, le format clang, la gestion reproductible des dépendances et plus encore.
- modern-cpp-template - Un modèle pour les projets C++ modernes utilisant CMake, Clang-Format, CI, les tests unitaires et plus encore, avec prise en charge de l'inclusion en aval.
- cmake_template - Un modèle de projet CMake pour vous familiariser avec le C++ et les outils.
- Pitchfork - Pitchfork est un ensemble de conventions de projet C++.
Bibliothèques
Ceci n’est pas censé être une liste complète de toutes les bibliothèques C et C++. Il s'agit d'une liste de bibliothèques modernes de haute qualité avec une applicabilité générale (sérialisation, base de données, tests, etc.) ou de bibliothèques de haute qualité avec une utilisation novatrice des nouvelles fonctionnalités C++.
Évier / Cadre
- rappel - Abseil est une collection open source de code C++ (conforme à C++11) conçue pour augmenter la bibliothèque standard C++.
- Boost - Collection de bibliothèques C++.
- Folly - Bibliothèque open source Facebook.
- POCO - Les bibliothèques POCO C++ sont de puissantes bibliothèques C++ multiplateformes permettant de créer des applications réseau et Internet qui s'exécutent sur des systèmes de bureau, de serveur, mobiles, IoT et embarqués.
- nonstd-lite - Parent des référentiels *-lite, un chemin de migration vers les fonctionnalités post-C++11 pour les environnements pré-C++11.
- xtd - Framework C++ 17/20 moderne pour créer des applications console (CLI), formulaires (interface graphique comme WinForms) et tunit (tests unitaires comme Microsoft Unit Testing Framework) sur Windows, macOS, Linux, iOS et Android.
Essai
- Tests d'approbation pour C++ - Tests d'approbation natifs pour C++ sur Linux, Mac et Windows.
- autocheck - Clones QuickCheck et SmallCheck pour C++.
- Bandit - Un framework uniquement en-tête pour C++11 qui veut faire du travail avec les tests unitaires une expérience agréable.
- Boost:UT - Framework de tests C++ 20 μ(micro)/Unit, mono-en-tête, sans besoin de macros.
- Boost.Test - Cadre de test Boost.
- Catch - Un framework moderne, natif C++, avec en-tête uniquement, pour les tests unitaires, TDD et BDD.
- clean-test - Un framework de test C++-20 moderne.
- doctest - Le framework de test à en-tête unique C++ 11/14/17/20 le plus rapide et riche en fonctionnalités pour les tests unitaires et TDD.
- Fakeit - La moquerie C++ simplifiée. Une bibliothèque d'en-têtes simple mais très expressive uniquement pour la moquerie C++.
- Googletest - Cadre de test et de moquerie Google.
- Mull - Outil pratique de test de mutation pour C et C++
- rapidcheck - Clone de QuickCheck pour C++.
- snitch - Cadre de test léger C++20.
Analyse comparative
Bibliothèques et frameworks pour créer des micro-benchmarks.
- Celero - Bibliothèque/Framework de création de référence C++.
- Google Benchmark ? - Une bibliothèque de support de microbenchmark.
- hayai - le framework d'analyse comparative C++.
- Nonius - Un framework de micro-benchmarking C++. Bibliothèque/Framework de création de référence C++.
- nanobench - Fonctionnalité de microbenchmarking à en-tête unique simple, rapide et précise pour C++ 11/14/17/20
Enregistrement
- fmtlog - Une bibliothèque de journalisation de style fmtlib avec une latence en nanosecondes.
- spdlog - Bibliothèque de journalisation C++ rapide.
- loguru - Une bibliothèque de journalisation C++ légère et flexible
Enfilage
- concurrentqueue - Une file d'attente simultanée rapide, multi-producteurs et multi-consommateurs, sans verrouillage, pour C++11.
- Cpp-Taskflow - Bibliothèque de programmation de tâches parallèles C++ moderne
- Junction - Structures de données concurrentes en C++.
- MPMCQueue - Une file d'attente sans verrouillage multi-producteurs et multi-consommateurs délimitée écrite en C++11.
- SPSCQueue - Une file d'attente délimitée à producteur unique, à consommateur unique, sans attente et sans verrouillage, écrite en C++11.
- Threading Building Blocks - Threading Building Blocks (TBB) est une bibliothèque de modèles C++ développée par Intel pour la programmation parallèle sur les processeurs multicœurs. Grâce à TBB, un calcul est décomposé en tâches pouvant s'exécuter en parallèle. La bibliothèque gère et planifie les threads pour exécuter ces tâches.
- execq - File d'attente intelligente qui exécute les tâches de manière similaire à un pool de threads (série/simultané) en C++11.
- concurrencpp - Une bibliothèque générale de concurrence contenant des tâches, des exécuteurs, des minuteurs et des coroutines C++20 pour les gérer tous.
Analyse et sérialisation
- json ? - JSON pour le C++ moderne.
- jsoncpp - Une bibliothèque C++ pour interagir avec JSON.
- toml++ - Une bibliothèque C++17 uniquement en-tête pour analyser TOML v0.5.0 et versions ultérieures.
- tinytoml -Une bibliothèque C++11 d'en-tête uniquement pour l'analyse de TOML.
- yaml-cpp - Un analyseur et émetteur YAML en C++.
- cpptoml - Une bibliothèque d'en-tête uniquement pour analyser les fichiers de configuration TOML.
- céréales - Une bibliothèque C++11 pour la sérialisation.
- cista - Une bibliothèque C++17 pour la sérialisation binaire hautes performances sans copie.
- simdjson - Accélérer l'analyse de JSON en soi à l'aide des instructions SIMD couramment disponibles
- Boost.JSON - Une bibliothèque JSON avec une prise en charge robuste des allocateurs personnalisés.
- hjson-cpp - Une bibliothèque C++11 pour lire et écrire des fichiers Hjson et/ou JSON.
- json_struct - Analyseur JSON hautes performances à en-tête unique, analysant directement vers et depuis les structures C++.
- daw_json_link - Sérialisation et analyse JSON rapides et pratiques en C++
Formatage et modèles de chaînes
- {fmt} - Petite bibliothèque de formatage sûre et rapide.
- Inja - Un moteur de modèles pour le C++ moderne.
- Moustache - Modèles de texte Moustache en C++11.
- tinyformat.h - Bibliothèque de remplacement printf minimale et sécurisée pour C++.
- pprint - Jolie imprimante pour le C++ moderne.
Script
- sol2 - Liaison de la bibliothèque C++ à Lua.
- ChaiScript - Un langage de script intégré facile à utiliser pour C++.
- pybind11 - Fonctionnement transparent entre C++11 et Python.
Web/HTTP
- Beast - HTTP et WebSocket construits sur Boost.Asio en C++11.
- cpprestsdk - Le SDK C++ REST est un projet Microsoft pour la communication client-serveur basée sur le cloud en code natif utilisant une conception d'API C++ asynchrone moderne. Ce projet vise à aider les développeurs C++ à se connecter et à interagir avec les services.
- cpr - Requêtes C++ : Curl for People, un portage spirituel de requêtes Python.
- Crow - Un microframework rapide et facile à utiliser pour créer des serveurs Web (inspiré de Python Flask).
- dmbcs-micro-server - JSON, HTML, texte et PNG basés sur C++20 sur HTTP ; moyen simple d'intégrer un serveur dans votre application pour fournir une interface utilisateur Web.
- Drogon - Un framework d'application HTTP hautes performances basé sur C++14/17
- oat++ - Framework Web hautes performances (C++11, zéro dépendance).
- pistache - Un framework REST C++ élégant.
- restbed - Le framework Restbed apporte des fonctionnalités RESTful asynchrones aux applications C++11.
Base de données
- mongo-cxx-driver - Pilote C++ pour MongoDB.
- redox - Client C++ 11 moderne, asynchrone et extrêmement rapide pour Redis.
- sqlite_orm - puissante bibliothèque ORM SQLite3 en-tête uniquement pour C++14.
- sqlite3pp - Wrapper C++ de l'API SQLite3.
- sqlpp11 - Une bibliothèque de modèles SQL de type sécurisé pour C++.
- libpqxx - L'API client C++ officielle pour PostgreSQL.
- TinyORM - Bibliothèque ORM C++ moderne.
BioC++
- SeqAn - La bibliothèque C++ moderne pour l'analyse de séquences (C++17, C++20).
Divers
- ASAP - bibliothèque d'en-tête uniquement pour analyser, afficher, exploiter et itérer sur les dates.
- BigIntegerCPP - Une grande bibliothèque d'entiers C ++ 11 avec des performances élevées et efficaces, de nature simpliste et également propre aux yeux.
- CAF - Une implémentation Open Source du modèle d'acteur en C++.
- Cinder - Cinder est une bibliothèque gratuite et open source pour un codage créatif de qualité professionnelle en C++.
- Conduit - Flux hautes performances basés sur Coroutine TS.
- cppitertools - implémentation d'itertools (python) pour C++14
- cxxopts - Analyseur léger d'options de ligne de commande C++.
- date - Une bibliothèque de date et d'heure basée sur l'en-tête C++ 11/14/17.
- docopt.cpp - docopt crée de superbes interfaces de ligne de commande.
- EnTT - Un système d'entité-composant (ECS) rapide et fiable avec en-tête uniquement pour le C++ moderne.
- Font Chef - Une bibliothèque C99 et C++14 pour cuisiner des polices et restituer du texte
- HashLibPlus - Une bibliothèque C++11 qui fournit une interface facile à utiliser pour calculer les hachages et les sommes de contrôle des chaînes, des fichiers, des flux, des tableaux d'octets et des données non typées, pour n'en citer que quelques-uns. Il prend également en charge le hachage incrémentiel.
- IntX - Un port C++11 de la bibliothèque entière de précision arbitraire IntX avec rapidité, sur l'implémentation des algorithmes de multiplication/division O(N * log N).
- iod - Utilitaires de méta-programmation pour C++14.
- Magic Enum - Réflexion statique pour les énumérations (vers une chaîne, à partir d'une chaîne, une itération) pour le C++ moderne, travaillez avec n'importe quel type d'énumération sans aucune macro ou code passe-partout.
- Wise Enum - Réflexion statique pour les énumérations similaires à Magic Enum mais fonctionne avec C++ 14/11/17.
- Nameof - Une bibliothèque C++17 en en-tête uniquement fournit le nom des macros et des fonctions pour obtenir le nom simple de la variable, du type, de la fonction, de la macro et de l'énumération.
- PEGTL - Bibliothèque de modèles de grammaire d'expression d'analyse (C++11, en-tête uniquement).
- random - Un en-tête Random simple et pratique pour le C++ moderne.
- rang - Une bibliothèque C++11 simple, moderne et en-tête uniquement pour les couleurs de votre terminal.
- range-v3 - Bibliothèque de plages expérimentales pour C++11/14/17.
- SimpleBaseLib4CPP - Une simple bibliothèque d'encodage de base C++11 qui prend actuellement en charge l'encodage et le décodage de diverses bases telles que Base16, Base32 (diverses variantes), Base58 (diverses variantes), Base64 (diverses variantes). [MIT]
- simple_match - Correspondance de modèle d'en-tête simple uniquement pour c++14.
- SRL-CPP - Une bibliothèque de création de langage regex simple écrite en C++11 qui fournit une interface facile à utiliser pour construire des expressions regex simples et complexes. [MIT]
- tweeny - Une bibliothèque d'interpolation d'en-tête uniquement avec plus de 30 fonctions d'assouplissement.
- Vireo - Une bibliothèque de traitement vidéo légère et polyvalente de Twitter.
- indicateurs - Indicateurs d'activité pour le C++ moderne.
- AssociatedEnum - bibliothèque d'en-tête uniquement pour C++ pour les énumérations avec les valeurs associées.
- openFrameworks - une boîte à outils C++ open source pour le codage créatif.
- tabulate - Créateur de tables pour le C++ moderne.
Outils
Divers
- format clang ? - Un outil pour formater le code C++.
- clangd - comprend votre code C++ et ajoute des fonctionnalités intelligentes à votre éditeur : complétion de code, erreurs de compilation, accès à la définition et plus encore.
- Explorateur de compilateur - Explorez de manière interactive la sortie d'assembly de votre code C++.
- cquery - Serveur de langage C/C++ prenant en charge une base de code de plusieurs millions de lignes, alimenté par libclang. Emacs, Vim, VSCode et autres avec prise en charge du protocole de serveur de langage. Références croisées, complétion, diagnostics, mise en évidence sémantique et plus encore (Plus de commits depuis le 27 novembre 2018)
- ccls - Serveur de langage C/C++/ObjC prenant en charge les références croisées, les hiérarchies, la complétion et la mise en évidence sémantique, dérivé de cquery, qui est en cours de développement actif
- irony-mode - Mode mineur AC/C++ pour Emacs alimenté par libclang.
- modern-cpp-font-lock-mode - Prise en charge de la coloration syntaxique pour Modern C++ avec emacs
Analyse dynamique
- des désinfectants ? - Ce projet abrite les désinfectants : AddressSanitizer, MemorySanitizer, ThreadSanitizer, LeakSanitizer, et plus encore.
- Valgrind - est un cadre d'instrumentation pour créer des outils d'analyse dynamique. Il existe des outils Valgrind qui peuvent détecter automatiquement de nombreux bogues de gestion de la mémoire et de thread, et profiler vos programmes en détail. Vous pouvez également utiliser Valgrind pour créer de nouveaux outils.
Analyse statique
- cppcheck - est un outil d'analyse statique pour le code C/C++. Il fournit une analyse de code unique pour détecter les bogues et se concentre sur la détection des comportements indéfinis et des constructions de codage dangereuses.
- clang-bien rangé ? - est un outil « linter » C++ basé sur clang. Son objectif est de fournir un cadre extensible pour diagnostiquer et corriger les erreurs de programmation typiques, telles que les violations de style, l'utilisation abusive de l'interface ou les bogues pouvant être déduits via une analyse statique. clang-tidy est modulaire et fournit une interface pratique pour rédiger de nouveaux chèques.
- clang-analyzer - est un outil d'analyse de code source qui détecte les bogues dans les programmes C, C++ et Objective-C. Il met en œuvre une analyse inter-procédurale sensible au chemin basée sur une technique d'exécution symbolique.
Fuzzing
- American Fuzzy Lop - American Fuzzy Lop est un fuzzer axé sur la sécurité.
- hongfuzz - Un fuzzer orienté sécurité, basé sur les commentaires, évolutif et facile à utiliser avec des options d'analyse intéressantes.
- libFuzzer - Une bibliothèque pour les tests de fuzz guidés par la couverture.
Système de construction
- Bazel - est un système de construction rapide, évolutif, multilingue et extensible.
- build2 - est une chaîne d'outils de construction multiplateforme pour développer et empaqueter du code C et C++.
- CMake ? - Famille d'outils multiplateformes conçus pour créer, tester et empaqueter des logiciels.
- Meson - est un système de construction open source destiné à être à la fois extrêmement rapide et, plus important encore, aussi convivial que possible.
- XMake - est un utilitaire de construction multiplateforme basé sur Lua.
Gestion des colis
- Buckaroo - Gestionnaire de packages polyglottes entièrement décentralisé pour C++ et amis
- cget - Récupération du paquet CMake.
- conan - Gestionnaire de paquets C/C++.
- CPM - Un script CMake pour la gestion des dépendances multiplateformes sans configuration.
- Hunter - Gestionnaire de packages multiplateforme pour C++.
- vcpkg - Gestionnaire de bibliothèque C++ pour Windows, Linux et MacOS
- xrepo - Un gestionnaire de packages C/C++ multiplateforme basé sur Xmake.
À propos
Cette liste a été compilée par Erik Rigtorp avec l'aide de la communauté C++ :
- rigtorp.se
- [email protected]
- github.com/rigtorp
- twitter.com/rigtorp
- linkedin.com/in/rigtorp