Sari la conținut
Modulul 4

Șabloane și programare generică

Scrieți abstracții cu adevărat generice, reutilizabile, fără costuri generale, folosind șabloane, concepte și programare în timp de compilare.

Fundamentele șablonului

  1. Șabloane de funcție și deducere de tip

    Aflați cum să scrieți funcții care funcționează cu orice tip. Înțelegeți deducerea argumentelor șablonului, parametrii non-tip și de ce șabloanele se află în anteturi.

  2. Class Templates & CTAD

    Build generic data structures with class templates. Understand member definitions, default arguments, and how C++17's CTAD lets you omit template arguments.

Șabloane avansate

  1. Specializarea șablonului și expedierea etichetelor

    Stăpâniți specializarea completă și parțială, aflați când să preferați supraîncărcarea și descoperiți trimiterea etichetelor și dacă constexpr ca alternative pentru ramificarea în timp de compilare.

  2. Șabloane variadice și expresii pliate

    Gestionați orice număr de argumente șablon cu pachete de parametri. Master fold expresii pentru procesare elegantă, fără recursive a pachetelor.

  3. SFINAE, Type Traits & enable_if

    Înțelegeți principiul Eșecul substituției nu este o eroare, utilizați trăsături de tip pentru introspecția în timp de compilare și constrângeți șabloanele cu enable_if.

Programare generică modernă

  1. C++20 Concepte și constrângeri

    Definiți cerințe precise privind argumentele șablon folosind concepte. Scrieți un cod generic mai curat, cu clauze requires, șabloane de funcții abreviate și concepte standard de bibliotecă.

  2. constexpr, consteval și programare în timp de compilare

    Mutați calculul din timpul de execuție în timpul de compilare folosind constexpr, consteval și constinit. Creați tabele de căutare, validați configurațiile și utilizați containere constexpr.

  3. Modele de metaprogramare șablon

    Stăpânește modele de șabloane avansate: CRTP pentru polimorfism static, proiectare bazată pe politici pentru o compoziție flexibilă, ștergere tip pentru generice de rulare și linii directoare pentru când să folosești șabloane față de dispecerare virtuală.