C++26 Reflection: Type Erasure ohne Boilerplate
Beautiful Type Erasure with C++26 Reflection
Type-Erasure-Lösungen wie `std::any` oder `std::function` sind simpel, aber für komplexe Schnittstellen braucht es bisher hunderte Zeilen Code oder schwergewichtige Bibliotheken. `rjk::duck` nutzt die neue C++26-Reflection, um diesen Aufwand drastisch zu reduzieren. Ein einziges Header-File erzeugt aus einer annotierten Trait-Struktur automatisch die passende Vtable, inklusive Overload-Auflösung und Unterstützung für Operatoren, Komposition und Erweiterungsmethoden. Der Artikel zeigt, wie Tags generiert, Vtables erzeugt und Aufrufe über generierte `overload_set`s vermittelt werden – und wie Reflection dabei hilft, den Code klein und performant zu halten.
Einfach die Schnittstelle einmal deklarieren und den Rest von deinen bereits geschriebenen Definitionen erledigen lassen.