Proxy
Proxy: Next Generation Polymorphism in C++
...There are many drawbacks in this mechanism, including life management (because each object may have a different size and ownership) and reflection (because it is hard to balance between usability and memory allocation). To workaround these drawbacks, some languages like Java or C# choose to sacrifice performance by introducing GC to facilitate lifetime management, and JIT-compile the source code at runtime to generate full metadata. We improved the theory and implemented it as a C++ library without sacrificing performance, proposing to merge it into the C++ standard.