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 diesem Kurs.

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":

  • Sprachneuerungen in C++20
    • Aggregate Initialisierung mit bestimmten Initialisierern
    • Klammerninitialisierung für Aggregate
    • range-based for mit Initialisierer
    • using für enums
    • Drei-Wege-Vergleiche: Vergleiche einfach implementieren
  • Template-Neuerungen
    • Konzepte: Prädikate für stark typisierten generischen Code
    • Klassentypen als Nicht-Typ-Template-Parameter
    • Mehr CTAD
  • Coroutinen: Pausierbare Funktionen
  • Ranges: Die STL der nächsten Generation
  • Module: Besser als #include
  • Lambdas in C++20: Was ist neu
  • Mehr Dinge zur Kompilierzeit berechnen
    • Speicher zur Compile-Zeit allozieren
    • Funktionen garantiert zur Compile-Zeit ausführen
    • Variablen zur Compile-Zeit initialisieren und später modifizieren
  • Neue STL-Elemente
    • std::format: Moderne & typsichere Textformatierung
    • span
    • source_location
    • std::string: starts_with und ends_with
    • containt für alle assoziativen Container
    • std::jthread
    • std::erase und std::erase_if

Mit dem Kurs 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:

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.

Diese Felder sind erforderlich.