Template e programmazione generica
Scrivi astrazioni davvero generiche, riutilizzabili e a costo zero usando template, concept e programmazione a tempo di compilazione.
Fondamenti dei template
Template di funzione e deduzione dei tipi
Impara a scrivere funzioni che funzionano con qualsiasi tipo. Comprendi la deduzione degli argomenti template, i parametri non di tipo e perché i template vivono negli header.
Template di classe e CTAD
Costruisci strutture dati generiche con i template di classe. Comprendi le definizioni dei membri, gli argomenti predefiniti e come il CTAD di C++17 ti permette di omettere gli argomenti template.
Template avanzati
Specializzazione dei template e tag dispatch
Padroneggia la specializzazione totale e parziale, impara quando è meglio ricorrere all'overloading e scopri il tag dispatch e if constexpr come alternative per la ramificazione a tempo di compilazione.
Template variadici ed espressioni fold
Gestisci un numero qualsiasi di argomenti template con i pack di parametri. Padroneggia le espressioni fold per elaborare i pack in modo elegante e senza ricorsione.
SFINAE, type trait ed enable_if
Comprendi il principio Substitution Failure Is Not An Error, usa i type trait per l'introspezione a tempo di compilazione e vincola i template con enable_if.
Programmazione generica moderna
Concept e vincoli di C++20
Definisci requisiti precisi sugli argomenti template usando i concept. Scrivi codice generico più pulito con le clausole requires, i template di funzione abbreviati e i concept della libreria standard.
constexpr, consteval e programmazione a tempo di compilazione
Sposta i calcoli dal runtime al tempo di compilazione usando constexpr, consteval e constinit. Costruisci tabelle di lookup, valida configurazioni e usa i contenitori constexpr.
Pattern di metaprogrammazione con i template
Padroneggia i pattern template avanzati: CRTP per il polimorfismo statico, design basato su policy per una composizione flessibile, type erasure per la genericità a runtime e criteri per scegliere tra template e dispatch virtuale.