-
Filière :
Développement logiciel
-
Sous-filière :
Autres technologies
-
Référence
PR-CPP17
-
Durée
3 jours (21 h)
-
Prix par personne HT
Sur demande
Objectifs pédagogiques
- Maîtriser les nouveautés des versions récentes de C++
Public cible
- Développeurs C
Pré-requis
Pratique professionnelle de C++
Programme de la formation
Nouveautés fondamentales de la norme C++
- nullptr_t et le littéral nullptr
- Nouveaux types, littéraux et séparateurs
- Variables templates
- Initialisation uniforme
- Initialisation de tableaux et collections
- Parcours unifié des tableaux et conteneurs
- Listes d’initialisation avec initializer_list<T>
- La boucle « range based » for
- Énumérations fortement typées
- Littéraux personnalisés avec operator » »
- Init-statements
- Types normalisés et variantes (uint_8, uint64_t, …)
- L’opérateur sizeof (Class ::membre)
- Contrôle de l’alignement mémoire
- Inférence de types et de signatures avec auto
- C++14 et déduction étendue
- L’opérateur decltype
- Structured bindings
- Les nouveaux spécificateurs de classe (override, default, delete, final)
- Constructeur délégué
- Constructeur hérité
- Initialisation de membres
- Constructeur explicite multi-paramétré
- Données inline
- Alias et using
- La clause noexcept
- Expressions constantes avec constexpr
- Gestion du temps, l’espace de nom chrono
- Générateurs / distributions de nombre aléatoires
- Expression régulières avec Regex
- Attributs
Nouveautés de la librairie standard
- Les nouveaux itérateurs
- Les tableaux à taille fixe avec std ::array
- std ::string_view
- std ::variant et std ::any
- std ::optional
- Les nouvelles collections associatives : unordered_map/set
- Singly-Linked Lists
- Le conteneur tuple
- Les nouveaux algorithmes ensemblistes
Move semantics
- Copie versus déplacement
- Value et RValue reference
- La fonction move
- Move constructor et move assignement operator
- Héritage et move constructor / op=
- R-value reference et STL
- STL C++11 et swap / move
- Signature reference qualifiers
- Mauvaises pratiques
Gestion des ressources
- Resource Acquisition Is Initialization (RAII)
- L’opérateur -> avec ou sans généricité
- La classe dépréciée auto_ptr
- Propriété et transfert de responsabilité
- auto_ptr et tableaux dynamiques
- La classe unique_ptr
- Unique_ptr et tableaux dynamiques
- Comptage de références avec la classe shared_ptr
- Custom deleter
- Les fonctions make_unique (C++14) et make_shared
- La classe weak_ptr et le référencement circulaire
Programmation fonctionnelle
- Problématique de l’abonnement
- Pointeur de function / méthode
- Pointeur vers membre statique
- Les classe function et mem_fn
- Binding, placeholders
- Adaptateurs de références
- Les lambda-expression
Utilisation avancée de la généricité
- Typage multiple
- Inférence des retours avec decltype
- Paramétrage / spécialisation des méthodes
- Perfect forwarding avec std::forward
- Références universelles et collapsing
- Héritage / containment et généricité
- Méta-programmation
- Typologie C++ et classes de traits
- Assertions statiques avec static_assert
- Extended friend declaration
- Les variadic templates, pattern matching et héritage multiple
- Compile switching avec std::enable_if
- constepr if
Multithreading
- Principes
- Démarrage et détachement d’un thread
- Threads et gestion des exceptions
- La classe std ::call_once
- L’espace de noms this_thread
- Futures / promises et packaged_task
- Programmation asynchrone avec async
- Future et exceptions
- Politiques de démarrage
- Comparaison thread versus future
- Partage de ressources et mécanismes de synchronisation
- Mutexes et données atomiques
- Unique-lock et lock_guard
Qualité
Cette formation est accessible aux personnes en situation de handicap, nous contacter en cas de besoin d’informations complémentaires.
Programme mis à jour le