Zum Inhalt springen
Modul 4

Templates & generische Programmierung

Schreibe wirklich generische, wiederverwendbare Abstraktionen ohne Overhead — mit Templates, Concepts und Programmierung zur Kompilierzeit.

Jetzt lernen8 Lektionen

Template-Grundlagen

  1. Funktions-Templates & Typdeduktion

    Lerne, wie du Funktionen schreibst, die mit jedem beliebigen Typ funktionieren. Verstehe die Template-Argument-Deduktion, Nicht-Typ-Parameter und warum Templates in Header-Dateien stehen müssen.

  2. Klassen-Templates & CTAD

    Baue generische Datenstrukturen mit Klassen-Templates. Verstehe Member-Definitionen, Standardargumente und wie dir CTAD aus C++17 erlaubt, Template-Argumente wegzulassen.

Fortgeschrittene Templates

  1. Template-Spezialisierung & Tag Dispatch

    Meistere vollständige und partielle Spezialisierung, lerne, wann Überladung die bessere Wahl ist, und entdecke Tag Dispatch sowie if constexpr als Alternativen für Verzweigungen zur Kompilierzeit.

  2. Variadische Templates & Fold-Ausdrücke

    Verarbeite beliebig viele Template-Argumente mit Parameter-Packs. Meistere Fold-Ausdrücke für elegante Pack-Verarbeitung ganz ohne Rekursion.

  3. SFINAE, Type Traits & enable_if

    Verstehe das Prinzip "Substitution Failure Is Not An Error", nutze Type Traits zur Introspektion während der Kompilierung und schränke Templates mit enable_if ein.

Moderne generische Programmierung

  1. C++20-Concepts & Constraints

    Formuliere mit Concepts präzise Anforderungen an Template-Argumente. Schreibe saubereren generischen Code mit requires-Klauseln, abgekürzten Funktions-Templates und den Concepts der Standardbibliothek.

  2. constexpr, consteval & Programmierung zur Kompilierzeit

    Verlagere Berechnungen mit constexpr, consteval und constinit von der Laufzeit in die Kompilierzeit. Baue Lookup-Tabellen, prüfe Konfigurationen und nutze constexpr-Container.

  3. Muster der Template-Metaprogrammierung

    Meistere fortgeschrittene Template-Muster: CRTP für statische Polymorphie, Policy-based Design für flexible Komposition, Type Erasure für generische Typen zur Laufzeit — und lerne, wann Templates und wann virtuelle Aufrufe die richtige Wahl sind.