C++ Core Guidelines: Type Erasure mit Templates

Die C++-Core-Guidelines-Reihe beschäftigt sich in einem Beitrag vom 17. September 2018 mit Type Erasure auf Basis von Templates. Der Originalbeitrag bei heise Developer vergleicht Zeiger, objektorientierte Interfaces und generische Techniken, um unterschiedliche konkrete Typen über eine gemeinsame Schnittstelle zu verwenden.

Type Erasure entfernt die konkrete Typinformation an der Schnittstelle, ohne die Implementierung auf einen einzigen Datentyp festzulegen. Der Beitrag beschreibt zunächst void-Zeiger und objektorientierte Basisklassen. Beide Ansätze können unterschiedliche Werte zusammenführen, unterscheiden sich aber bei Typsicherheit und notwendiger Vererbung.

std::function verbindet dynamische und statische Polymorphie

Templates erlauben eine verhaltensorientierte Schnittstelle. Im Beispiel nimmt std::function Funktionen, Funktionsobjekte, gebundene Funktionen und Lambda-Ausdrücke mit kompatibler Signatur auf. Eine Dispatch-Tabelle kann dadurch verschiedene aufrufbare Einheiten unter einem gemeinsamen Typ verwalten, während die Prüfung der Parameter beim Übersetzen erhalten bleibt.

Die Technik ist für C++-Bibliotheken und Werkzeuge interessant, die Erweiterungen oder unterschiedliche Implementierungen über eine einheitliche API aufnehmen. In Spieleprojekten betrifft das beispielsweise austauschbare Systeme in Editoren, Testwerkzeugen oder Laufzeitmodulen. Der Artikel setzt die Reihe fort, zu der bereits Regeln für const und unveränderliche Schnittstellen gehört.

Weitere News

Weitere News

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein