C++17 in Detail
C++17 in Detail
Résumé :
Introduction
Le livre «C++17 in Detail» de Bartłomiej Filipek est paru en 2019 et est immédiatement devenu l'une des sources les plus faisant autorité sur la nouvelle norme C++17. Ce n'est pas un énième manuel pour débutants — c'est un guide technique approfondi qui aidera les développeurs de niveau intermédiaire et avancé à maîtriser toutes les fonctionnalités clés de la norme C++17 et à apprendre à les appliquer en pratique. Le livre contient 338 pages d'informations concentrées, étayées par des exemples de code et des conseils pratiques.
De quoi parle ce livre ?
«C++17 in Detail» est consacré à l'analyse détaillée des innovations apportées par la norme C++17. L'auteur examine successivement chaque fonctionnalité, en commençant par le langage et en terminant par la bibliothèque standard. Dans ce livre, vous trouverez :
- Les liaisons structurées (structured bindings) — comment décompresser des tuples, des paires et des structures en variables individuelles.
- if constexpr — la compilation de branches conditionnelles au moment de la compilation, ce qui permet d'écrire un code template plus efficace et plus propre.
- std::optional, std::variant, std::any — de nouveaux types d'encapsulation pour une gestion sécurisée des valeurs optionnelles, des alternatives et des types dynamiques.
- string_view — une représentation de chaîne non propriétaire qui accélère le travail avec les sous-chaînes sans copie.
- Les algorithmes parallèles — la bibliothèque standard prend désormais en charge l'exécution parallèle des algorithmes (std::execution::par).
- Le système de fichiers (std::filesystem) — une gestion multiplateforme des fichiers et des répertoires.
- Les améliorations de constexpr — il est désormais possible d'écrire des fonctions constexpr avec des boucles, des branchements et même une allocation dynamique de mémoire (de manière limitée).
- Les nouveaux attributs — [[fallthrough]], [[maybe_unused]], [[nodiscard]] et autres.
- La simplification des templates — deduction guides, auto dans les paramètres template, fold expressions.
Chaque chapitre est construit sur le principe « de la théorie à la pratique » : d'abord la syntaxe et la sémantique sont expliquées, puis des exemples d'utilisation réels sont donnés, et à la fin — les erreurs typiques et les recommandations.
À qui s'adresse ce livre ?
Le livre est destiné aux programmeurs qui ont déjà une expérience de travail avec C++ (au moins au niveau C++11/14) et qui souhaitent maîtriser rapidement et efficacement C++17. Il sera utile :
- Aux développeurs passant de normes plus anciennes à C++17.
- Aux ingénieurs qui écrivent des systèmes à forte charge ou embarqués et souhaitent utiliser les nouvelles fonctionnalités pour l'optimisation.
- Aux enseignants et aux étudiants de cycles supérieurs étudiant le C++ moderne.
- À tous ceux qui souhaitent écrire un code plus sûr, plus expressif et plus efficace.
Le livre ne convient pas aux programmeurs débutants — une connaissance solide des bases de C++ (pointeurs, templates, STL) est nécessaire pour comprendre le contenu.
Que va apprendre le lecteur ?
Après avoir lu le livre, vous serez capable de :
- Utiliser en toute confiance toutes les principales innovations de C++17 dans votre travail quotidien.
- Écrire un code plus propre et plus concis grâce aux liaisons structurées et à if constexpr.
- Appliquer std::optional et std::variant pour une gestion sécurisée des erreurs et des états alternatifs.
- Travailler avec le système de fichiers sans bibliothèques externes.
- Accélérer les algorithmes à l'aide des versions parallèles de la STL.
- Comprendre les mécanismes internes des nouveaux types et savoir éviter les pièges.
- Vous préparer à la transition vers C++20, car de nombreuses fonctionnalités de C++17 constituent la base des futures normes.
Points forts du livre
1. Profondeur et structure. L'auteur ne se contente pas d'énumérer les fonctionnalités, mais explique pourquoi elles ont été ajoutées, quels problèmes elles résolvent et comment les utiliser correctement. Chaque chapitre contient une section « Common pitfalls » (erreurs typiques), ce qui est très précieux pour un développeur praticien.
2. Orientation pratique.