C++ Schulung: Programmieren mit C++20
Sie verwenden bereits C++11, C++14 oder C++17? Mit den neuen Elementen von C++20 wird Ihr Code robuster und verständlicher. Wie's geht, erfahren Sie in dieser Schulung.
Teilnehmende lernen
- dank des Drei-Wege-Vergleichsoperators konsistente Vergleiche schreiben
- Nutzung Ihrer Templates und Fehlermeldungen mit Konzepten verbessern
- durch Coroutinen eine neue Möglichkeit kennen, um mehrere Aufgaben parallel zu erledigen
- mittels ranges kürzeren STL-Code schreiben
Dauer
3 Tage
Zielgruppe
Entwicklerinnen und Entwickler von C++ basierten Systemen. Gute Kenntnisse der Sprache C++ sind vorausgesetzt
Beschreibung
In diesem Training lernen Sie eine der größten Revolutionen von C++20 kennen, Concepts. Sie machen Templates weniger beängstigend und geben Ihnen gleichzeitig eine genauere Kontrolle über die Schnittstellen Ihrer Templates.
Sie erfahren, wie Concepts funktionieren und wie Sie Ihr eigenes Konzept erstellen. Weiter geht es mit einem Blick auf eine neue Form des Schreibens von Funktions-Templates: den abgekürzten Funktions-Templates. Am Ende erfahren Sie, wie Concepts Fehlermeldungen verbessern.
Ihre nächste Station sind Coroutinen. Diese sind eine tolle neue Möglichkeit, asynchronen Code zu schreiben und den schwierigen Teil dem Compiler zu überlassen. Diese Funktion kann Ihre Zustandsmaschinen erheblich reduzieren. Sie lernen zu überdenken, wie Funktionsaufrufe funktionieren und wie reguläre Funktionen mit Coroutinen verglichen werden. Danach machen Sie sich mit dem low-level-Teil der Coroutines API von C++20 vertraut. Mit dem Wissen erstellen Sie mithilfe einer Coroutine einen Byte-Stream-Parser.
Während Sie zu diesem Zeitpunkt zwei große Sprachaktualisierungen gesehen haben, erfahren Sie jetzt mehr über die Verbesserungen der STL: ranges. Und über die Verbesserungen, die Ihnen ranges bieten, z. B. die unbeabsichtigte Verwendung eines temporären Objekts, welches nicht mehr gültig ist.
Auf ranges folgen die neuen Möglichkeiten zum Formatieren eines Strings mit std::format
. Sie erfahren, wie std::format
die besten Teile von iostreams und snprintf
kombiniert. Ein Teil dieses Lernens besteht darin, std::format
zusammen mit einem benutzerdefinierten Buffer zu verwenden.
Anschließend sehen Sie, wie einfach Vergleiche in C++20 sein können. Wie viel weniger Code Sie schreiben müssen, um eine einfache Klasse zu erstellen, die alle sechs Vergleichsoperationen unterstützt. Der Anfang ist eine Zusammenfassung dessen, was Sie vor C++20 tun mussten, gefolgt davon, wie Ihr Code jetzt mit dem Raumschiff-Operator und einer neuen Compiler-Fähigkeit, die Operator-Rewrites aufruft, auf wenige Codezeilen reduziert wird. Sie lernen, in welchen Situationen das Aktualisieren von C ++ 17-Code zu unerwarteten Problemen führen kann.
Neben den Verbesserungen an Templates mit Konzepten bietet C++20 noch einiges mehr. Es ist an der Zeit, sich mit den neuen Typen vertraut zu machen, die Sie als Nicht-Typ-Template-Parameter verwenden können.
Im Training lernen Sie auch kleinere Elemente wie starts_with
für std::string
oder std::source_location
kennen, um die Notwendigkeit von Makros weiter zu beseitigen.
Seit C++11 hat jede Version die Möglichkeiten von constexpr
verbessert. C++20 ist keine Ausnahme. Neben den neuen Dingen, die Sie im constexpr
-Kontext tun können, lernen Sie auch zwei neue Elemente der constexpr
-Familie kennen: consteval
und constinit
.
Am Ende können Sie alle drei Schlüsselwörter in ein Bild setzen und festlegen, welches davon wann am besten verwendet wird.
Nach dem Seminar haben Sie ein klares Verständnis dafür, wie Sie mit C++20 einen robusten, schnellen und verständlichen Code schreiben können. Sie können Funktionen aus dem neuen Sprachstandard für ein Projekt bewusst auswählen und sicher verwenden.
Diese Inhalte lernen Sie in der Schulung "Programmieren mit C++20"
- C++20-Sprachaktualisierungen
- Designierte Initialisierer
- Runde Klammerinitialisierung für Aggregate
- Bereichsbasierte for-Schleife mit Initialisierer
- Operatoren Transformation
- Der
<=>
-Operator
- Template Updates
- Konzepte
- Variadisches Template Parameter mit gleichem Datentyp
- Einsatzorte für Konzepte
- Anforderungsausdrücke
- Ad hoc Constraints: requires requires
- Ein Konzept definieren
- Das erstellte Konzept testen
- Abgekürzte Funktions-Templates
- Eingeschränkte auto-Variablen
- CTAD für Aggregate
- Gleitkommazahlen als NTTP
- Klassen als NTTP
- Bedingtes explicit
- Coroutinen: Fortsetzbare Funktionen
- Was sind Coroutinen?
- Warum Coroutinen
- Funktion vs. Coroutine-Vergleich
- Elemente einer Coroutine
- Coroutine-Einschränkungen
- Coroutinenanpassungspunkte
- Ausnahmen und Coroutinen
- Ranges: Die nächste Generation Standard Template Library
- Ranges Motivation
- Ranges: Who is who
- Ein view
- Lazy View-Auswertung
- Umwandeln eines Bereichs zurück in ein Objekt
- Erstellen eines benutzerdefinierten Bereichsadapters
- Ein View mit Schreibzugriff
- Module: Die überlegene Art von Includes
- Warum Module
- Verschiedene Modultypen
- Header-Einheit
- Benanntes Modul
- Weniger defines mit Modulen
- Klassen in Modulen
- Templates in Modulen
- Lambda-Verbesserungen
- Lambda Ausdrücke
- Lambda Erfassungen
- Standardkonstruierbare Lambdas
- Lambdas in nicht evaluierten Kontexten
- Lambdas mit einem Template-Kopf
- Berechnungen zur Kompilierungszeit
std::is_constant_evaluated
- Fiasko der statischen Initialisierungsreihenfolge
consteval
const
-X Vergleichconstexpr
- Anpassungenconstexpr
und dynamischer Speicher
- Erweiterungen der Standard Template Library
std::format
std::span
std::source_location
std::string starts_with
&ends_with
contains
für alle assoziativen Containerstd::bit_cast
std::jthread
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.
I have liked the two courses on Concepts and Coroutines. After finishing them, I can say I have received good quality material.
Andreas' great expertise in the C++ language makes you feel you are employing your time and money correctly. I had some understanding and even practice in Concepts, but Andreas took that one step further. I had almost no knowledge of coroutines and, maybe because of that, I enjoyed that course even more than the first one.
I loved the use of code examples to explain the theory, also the way of coding, and I also found very useful the diagrams to sum up the most important points.
- Roberto Turrado Camblor, Teilnehmer an Schulungen zu Concepts und Coroutines
Die Folien enthalten die wichtigsten Informationen zum Thema. Nach dem Training bin ich sie noch einmal durchgegangen. Und ich werde immer wieder nachlesen, wenn ich etwas vergessen habe. Andreas sprach über seine Erfahrungen und gab uns Beispiele aus der Praxis. Dieser Teil des Trainings hat sehr geholfen.
Ich habe bereits begonnen, einige der Dinge, die ich im Training gelernt habe, anzuwenden. Ich denke, seine Beispiele aus der realen Welt helfen mir künftig sehr.
Der Coding-Teil des Trainings hat mir sehr gut gefallen. Die schnelle Umsetzung, nachdem wir in ein neues Thema eingestiegen sind, war für mich sehr nützlich.
- Teilnehmer eine Woche nach seiner 3-Tages-Schulung
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.
Informiert bleiben
Von Zeit zu Zeit biete ich eine offene Schulung an. Diese findet aktuell online via Zoom über 5 Tage jeweils ca. 16:00 - 20:00 statt. Bei Interesse können Sie sich für Updates dazu hier eintragen.