The article introduces rjk::duck, a C++26 library for type erasure using reflection, simplifying complex type erasure with minimal boilerplate.
It explains how to define traits using annotations like [[=rjk::trait]] and generate tags and vtables through reflection, handling overload resolution via overload sets.
Key implementation details include pointer-interconvertibility to optimize memory usage and support for inlined functions via perf_options for performance tuning.
The library is single-header, supports owning/non-owning semantics, and works with gcc using -std=c++26 -freflection, though compile-time usage has limitations.
Reflection enables safer, more maintainable code generation compared to traditional type erasure approaches, with future plans for additional features like allocator support.