Das Seminar zu C++17

Aufbauend auf einem Grundverständnis von C++ wird in diesem Kurs der Standard dieser Programmiersprache ISO/IEC 14882:2017 (vereinfacht ISO C++17 oder C++17) vorgestellt. Dabei werden die Änderungen von der neuen Standards gegenüber den alten ISO C++98 und ISO C++11 besprochen. Die Neuerungen werden anhand lauffähiger Beispiele im Seminar demonstriert und eingeübt.

Die folgenden Themen werden durchgenommen:

  • Neue Schlüsselwörter für den Umgang mit Typen und Deklarationen:
    • auto
    • decltype
    • using
  • Alignment
    • alignas
    • alignof
  • Das Schlüsselwort nullptr
  • Neue Typen
  • Stark typisierte Enums
  • Enums mit Namensräumen
  • Nicht eingeschränkte Unions
  • Konstante Ausdrücke
  • Das neue Schlüsselwort constexpr
  • Unicode Unterstützung
  • Unicode Typen
  • Prefixes
  • Stringliterale
  • Neue Schlüsselwörter für Klassengestaltung
    • override zum kontrollierten Überschreiben von Methoden
    • final zum Finalisieren von Methoden und Klassen
  • Konstruktorvererbung
  • Konstruktordelegation
  • Neue Initialisierungssyntax
  • Initialisierungssequenzen:
    • Der Container std::initializer_list<T>
    • Konstruktoren mit Wertelisten
  • Die R-Value Referenz
  • Der Move-Konstruktor
  • Kopierbarkeit und Bewegbarkeit von Objekten
  • Der Gebrauch von std::move()
  • Die Anwendung von std::forward<T>() in Templates
  • Type Traits
  • static_assert
  • Die neuen Möglichkeiten der using-Direktive
  • Template aliases
  • Namespace Assoziation
  • Lambdas
  • Nachfolgende Definition von Rückgabetypen
  • Referenzierung des Lambda Aufrufkontextes
  • Kopieren des Lambda Aufrufkontextes
  • Variadic Templates
  • Die Thread-Unterstützung der Standardbibliothek
  • Die Basismechanismen des Threadings
  • Mutexe
  • Synchronisierung über Bedingungsvariablen
  • Atomare Operationen
  • Atomare Typen
  • Lokaler Threadspeicher
  • Threading mit Lambdas (closures)
  • Futures
  • Smart Pointers
    • std::unique_ptr<T>
    • std::shared_ptr<T>
    • std::weak_ptr<T>
  • Neue Container
    • std::forward_list<T>
    • std::unordered_set<T>
    • std::unordered_map<T>
  • Reguläre Ausdrücke
  • Generische Lambda Ausdrücke
  • Deduktion des Funktionsrückgabetyps
  • Binäre Literale
  • Nummerngruppentrenner in Literalen
  • Das deprecated Attribut
  • Komplexere constexpr Funktionen
  • Variablen Templates

Ergänzungen durch C++17

  • if constexpr()
  • Standard Attribute
  • Strukturiertes Binden
  • Initialisierung in if- und switch-Anweisungen
  • Inline Variablen
  • Die Typen std::optional, std::any und std::variant
  • Die Bibliothek für das Dateisystem
  • Parallele Algorithmen

Das Seminar führt theoretisch und praktisch in den neuen Standard ein. Nach den theoretischen Abschnitten werden praktische Übungen eingelegt, sodass die Anwendbarkeit der neuen Sprach- und Bibliotheksbestandteile vom Teilnehmer getestet werden kann.

Die meisten aktuellen Versionen der üblichen Produktivcompiler unterstützen den C++17 Standard. Die beste Unterstützung liefert der ClangC++ Compiler knapp gefolgt vom GNUC++ Compiler. Das im Seminar eingesetzte Betriebssystem ist unerheblich. Üblicherweise ist es Linux, Windows oder MacOSX. Es können auch beliebige andere UNIX-Systeme eingesetzt werden.

Zuletzt geändert am 12.09.2020