C++-Programmierung: Generischer Code mit Type Traits

Generischer Code ist oft nicht einfach umzusetzen, denn unterschiedliche Typeigenschaften benötigen verschiedene Implementierungen. Hier helfen Type Traits.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 8 Kommentare lesen
Generischer Code mit Type Traits
Lesezeit: 13 Min.
Von
  • Detlef Wilkening
Inhaltsverzeichnis

Wenn Entwickler in C++ über Traits reden, beziehen sie sich häufig auf die Type Traits der Standardbibliothek, die die grundlegenden Eigenschaften von Typen beschreiben, und ihre Anwendung bei der bedingten Kompilierung wie etwa std::enable_if und Constexpr-If. Auch wenn dies wichtige Themen in C++ sind, so verdecken diese Diskussionen oft, dass es noch andere Anwendungen von Traits gibt. Sie können helfen, alltägliche Probleme beim Programmieren zu lösen.

Mehr zur Programmiersprache C++

Ein Type Trait beschreibt die Eigenschaften eines Typs. Das ist wichtig bei generischem Code, der von Typeigenschaften und nicht von einem konkreten Typ abhängig ist. Die folgenden Beispiele zeigen die Entwicklung von einfachem generischen Code zu generischem Code mit Eigenschaftsnutzung.

iX-tract
  • Type Traits sind eine Metaprogrammiertechnik, mit der sich Typeigenschaften zur Kompilierzeit abfragen lassen.
  • Sie erlauben generischen Code auf Basis dieser Typeigenschaften.
  • Traits-Klassen ermöglichen modularen erweiterbaren Code, da sie typspezifischen Code sammeln und vom Rest isolieren.

Den Anfang macht ein einfaches Beispiel für eine generische Funktion print ohne Sonderbehandlung. Diese Funktion gibt jedes Argument mit einem folgenden Leerzeichen und einem Ausgabepräfix aus (hier Ko:), wodurch die Ausgabe die Wahl der Funktion anzeigt. Das Präfix Ko: steht für Kopie, denn in dieser Variante der Funktion wird das Argument per Kopie übergeben.