Objectif :
Cette formation permet de découvrir et de mettre en œuvre les idiomes fondamentaux de la métaprogrammation en C++14, C++17 et C++20.
Bénéfices attendus :
Se familiariser avec les principes généraux de la méta-programmation.
Savoir quand et comment l’utiliser.
Public :
Ingénieurs, techniciens et scientifiques désirant approfondir leur pratique du langage.
Une bonne maîtrise du langage C++ est nécessaire.
Programme :
Introduction
Impacts de la méta-programmation
C++ comme un langage méta- programmable
Techniques de base
Template de fonction et de classe
Spécialisation et spécialisation partielle
Inférence du type de retour
Template variadique
Perfect Forwarding et Références Universelles
Alias de type
Mise en pratique : exercices, évaluation
Manipulation de types
Notion de traits
Introspection
Génération de type
Détection d’interface
Erreur de compilation via static_assert
Séquence de types et algorithmes associés
Mise en pratique : exercices, évaluation
Génération de code
Duplication de code
Génération conditionnelle : SFINAE
Génération conditionnelle : Tag Dispatching
Génération : if constexpr
Calcul à la compilation via template
Calcul à la compilation via constexpr
Mise en pratique : exercices, évaluation
Applications
Fonctions génériques contraintes
Détections de plateformes
Programmation générative
Mise en pratique : exercices, évaluation