C++ Schulung: C++ Templates - die richtige Dosis
In dieser Schulung lerne Sie, wie Templates in C++ bis hin zu C++20 einsetzen können, um robusteren Code zu schreiben.
Teilnehmende lernen
- ein gutes Verständnis für die verschiedenen Template-Arten haben
- die verschiedenen Template-Parameterarten sicher unterscheiden können
- variadische Templates und deren Vorteile kennen
- in der Lage sein, Templates beispielsweise mithilfe von Type-Traits einzuschränken
Dauer
3 Tage
Zielgruppe
Entwicklerinnen und Entwickler von C++ basierten Systemen. Gute Kenntnisse der Sprache C++ sind vorausgesetzt
Beschreibung
Nahezu alle C++ Programmierer und Programmiererinnen nutzten Templates, häufig indirekt durch Verwenden der STL (Standard Template Library). Obwohl Templates bereits sehr früh Teil von C++ waren gibt es immer noch Vorbehalte und Missverständnisse. In der Schulung wird gezeigt, dass Templates gerade im Bereich eingebettete Systeme durchaus ein Gewinn sein können.
Richtig verwendet sind Templates ein sehr hilfreiches Werkzeug, welches C++ Nutzende kennen sollte.
Inhalt
In dieser Schulung lernen die Teilnehmenden den Umgang und die Kontrolle von C++ Templates. Zum Einsatz kommen moderne Standards bis hin zu C++20. Immer beachtet werden Aspekte wie resultierende Code-Größe, Kompatibilität und Lesbarkeit.
Teilnehmende lernen, wie sich mit Templates Fehler bereits zur Compile-Zeit erkennen lassen und unerwünschte Konvertierungen unterbunden werden. Im weiteren Verlauf wird auf die Verwendung im Bereich eingebettete Systeme eingegangen um beispielsweise mit Templates Speicher statisch zu allozieren.
Die mit C++11 eingeführten variadischen Templates werden erklärt. Diese sind spezielle für Softwareentwicklung im MISRA-Umfeld interessant, da sie deterministisch eine variable Anzahl von Argumenten entgegennehmen können. Thematisiert wird auch, wie es mit constexpr möglich ist einigen Code nicht nur zur Compile-Zeit zu instantiieren, sondern auch direkt dort zu evaluieren und nur das Ergebnis im resultierenden Binary zu haben.
Nach der Schulung wissen Teilnehmende wie Templates in der Praxis sicher und sinnvoll angewendet werden können. Sie sind sich der Auswirkungen bewusst und kontrollieren diese.
Agenda
- Grundlagen Templates
- Was ist generische Programmierung
- Template-Parameter
- Funktions-Templates
- Klassen-Templates
- Abhängige Namen
- Spezialisierungen
- Primäre Templates
- Partielle Spezialisierung
- Vollständige Spezialisierung
- Alias-Templates
- Curiously Recurring Template Pattern
autoals nicht-Datentyp Template Parameter- Type-Traits
- Magic Type-Traits
- Missverständnisse wie Code-Bloat erklärt
- Richtlinien für die effiziente Verwendung von Templates
- In Datentypen denken
constexpr if
- Fortgeschrittene Templates
- Prüfungen zur Kompilierungszeit
- Variadische Templates
- Faltausdrücke (fold-expressions)
- Variablen Templates
- SFINAE
- Tag-Dispatch
- Template-Template-Parameter
- Policy design
extern templatetypenamevs.class- CTAD
- Template-Neuerungen in C++20
- CTAD für Aggregate
- Konzepte
- Einsatzorte für Konzepte
- Anforderungsausdruck
- Simple requirement
- Nested requirement
- Compound requirement
- Ad hoc Constraints: requires requires
- Ein Konzept definieren
- Das erstellte Konzept testen
- Abgekürzte Funktions-Templates
- Eingeschränkte Platzhalterdatentypenvariablen
- Gleitkommazahlen als NTTP
- Klassen als NTTP
- Bedingtes
explicit
Neugierig, wie meine C++-Kurse ablaufen?
Möchten Sie sich vorab ein besseres Bild von mir und meinem Unterrichtsstil machen? Dann lade ich Sie herzlich ein, diesen Ausschnitt einer Aufzeichnung eines einstündigen Online-Workshops anzusehen.
Mit der Schulung erhalten Sie
- Ein qualitativ hochwertiges Handout als farbiges PDF, das alle Verweise und eine Liste der Akronyme enthält. Sodass Sie nach dem Training jederzeit nachlesen können.
- Den Quell-Code für die Übungen inklusive Musterlösungen als ZIP-Datei.
- Teilnahmebescheinigung für Ihren Lebenslauf.
- Eins meiner Bücher kostenlos, damit Sie Ihr Wissen vertiefen können.
Was Sie von meinen Schulungen erwarten können.
Mein Motto lautet "Schreibe einzigartigen Code.". Ich mag es, den Code auf die notwendigen Teile zu reduzieren. Die Vervielfältigung kann durch Templates oder Funktionen erfolgen, sodass am Ende jeder einzelne Code eindeutig zur Codebasis beiträgt. Nur der einmalige Code reduziert die Wartung. Er gibt Ihnen mehr Zeit, sich auf Ihre nächsten Kundenbedürfnisse zu konzentrieren.
Um in der Praxis einmaligen Code zu schreiben, haben alle Schulungen einen hohen praktischen Anteil. Impulse und Präsentationen ergänzen Übungen aus der Praxis. In jedem Fall sind meine Sitzungen sehr interaktiv. Ich höre gerne, was die Teilnehmer denken, um die richtigen Tipps zu geben. So entsteht ein Schulungserlebnis, in dem jeder Teilnehmer Neues lernt und eigene Lernerfolge erzielt. Die Trainingsbestandteile bauen didaktisch und inhaltlich aufeinander auf. Und Fragen beantworte ich jederzeit.
Die Live-Demo-Teile sind ein wesentlicher Bestandteil meines Unterrichts. Ich nutze dort die folgenden zwei Tools:
- Compiler Explorer von Matt Godbolt
- C++ Insights von mir selbst.
Nicht die richtige Schulung?
Sie haben die passende Schulung nicht gefunden oder wünschen eine Modifikation? Gerne erstelle ich Ihnen eine Schulung für Ihre Bedürfnisse. Kontaktieren Sie mich einfach mit Ihrem Anliegen: Jetzt kontaktieren
Soll es lieber Englisch sein? Ich biete alle meine Schulungen auch in Englisch an.
Für Einzelpersonen
Sie interessieren sich als Einzelperson für eine Weiterbildung und möchten nicht auf eine offene Schulung warten? Für diesen Fall biete ich Selbstlernkurs in englischer Sprache an. Zum passenden Kurs für Sie geht es hier.


