Nouveautés C++ 11/14/17

  • Filière :

    Développement logiciel

  • Sous-filière :

    Autres technologies

  • Référence

    PR-CPP17

  • Durée

    3 jours (21 h)

  • Prix unitaire 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