Modulbeschreibung

C++ Advanced

ECTS-Punkte:
4
Lernziele:

Fortgeschrittene Techniken der Nutzung von Standard C++ und von wichtigen Bibliotheken

Kurse in diesem Modul

C++ Advanced:

Genaue Details werden zu Semesterstart bekannt gegeben. Mögliche Themen sind:

  • Rekapitulation C++: Typen, Werte, Funktionen, Lambdas, Templates, Variablentemplates, SFINAE, Variadic-Templates mit Parameter-Packs
  • Eigene Iteratoren für die Algorithmen der Standardbibliothek definieren, Adaption von Standardcontainern, inklusive hashing
  • Resourcenmanagement - Lebensdauer, Referenzen (lvalue, rvalue), Move versus Copy für eigene Typen, Forwarding, Lambdas mit generalized Capture, Exception Safety und noexcept, Konstruktor-Desktruktor-Regeln im Detail (=default, =deleted)
  • Typdeduktion, Rvalue-Referenzen und Forward Referenzen im Detail, auto, decltype, declval, forward, move
  • Tuple, Pair, Integer-Sequence, Deduktionsregeln, Anwendung, Relationale Operatoren damit definieren für eigene Typen
  • Policy-based Design von Klassen, Parametrisierung zur Compile-Zeit, Umgang mit Allokatoren in der Standardbibliothek
  • Compile-Zeit Berechnungen von Werten, Sequenzen und Arrays mittels constexpr Funktionen und Templates
  • Meta-Programmierung mittels type_traits: z.B., true_type, false_type, traits, conditional
  • Optionale Schnittstellen von generischen Klassen, Overload-Resolution mittels enable_if und SFINAE
  • Neue und zukünftige Standardklassen: any, optional, variant, string_view und deren Anwendung
  • Multi-Threading Features der Standardbibliothek: async und futures, threads, atomics, locks, condition variables, Memory Model
  • Vergleich und Umgang mit C++ und C Code-Altlasten. Verstehen der Probleme von "naked" Pointern, Kapselung Refactoring
  • Standardisieren
  • Aktuelle Themen aus der C++ Standardisierung, Aufbau des Sprachstandards, Proposal-Prozess, Review aktueller Proposals
Vorlesung mit 2 Lektionen pro Woche
Uebung mit 2 Lektionen pro Woche
Disclaimer

Diese Beschreibung ist rechtlich nicht verbindlich! Weitere Informationen finden Sie in der detaillierten Modulbeschreibung.