Great breakdown of type erasure! It's fascinating how std::any manages to hide concrete types behind a uniform interface, similar to how virtual functions enable polymorphism but with even more flexibility. The shape class example really helps demystify what's happening under the hood.
Thanks for writing this. This is unrelated, but one downside of AI being used as an oracle is that I feel like it is/will be less likely to accidentally stumble on an article like this, which clearly explains something I probably never would've asked.
Ever looked at std::any and wondered what's going on behind the scenes?
Beneath the intimidating interface is a classic technique called type
erasure: concrete types hidden behind a small, uniform wrapper.
Starting from familiar tools like virtual functions and templates, we'll
build a minimal std::any. By the end, you'll have a clear understanding
of how type erasure works under the hood.
8 comments
std::anyand wondered what's going on behind the scenes? Beneath the intimidating interface is a classic technique called type erasure: concrete types hidden behind a small, uniform wrapper.Starting from familiar tools like virtual functions and templates, we'll build a minimal
std::any. By the end, you'll have a clear understanding of how type erasure works under the hood.