Thank you for your answer, I will try to answer briefly the first questions that have arisen
> What you're calling "flat dynamic polymorphism" is what is typically referred to as "type erasure."No, it's implemented with type erasure, but it's not a type erasure. I called it flat dynamic polymorphism because interfaces collapse into a flat "dynamic concept" that can be reduced to smaller requirements.
For example, a polymorphic pointer to a value which can A, B, C can be cast to a polymorphic pointer to a value which can A, B, because it is valid by definition.
Thus, from a large interface <A, B, C ....> we can isolate the subsets we need, getting different "interfaces".
I have seen all the works you listed in this area, the best of them I consider the boost TypeErasure,
But nevertheless, each of them has its drawbacks, in the field of performance, usability and most importantly - none of them is standard, and I believe that even in the standard library there are many places where this would be applicable
What about examples, pdf presents some links to godbolt with full examples and my version of dyno 'Drawable' here :
https://godbolt.org/z/8YxPncEqE
> What are Draw, Method2, and Method3? What is any_with? What can I do with this type? How do I construct it? What are its members? What does its storage look like? Can I customize operations?
This is described below in the text, unfortunately I do not have much experience in compiling such documents and did not want to overwhelm with unnecessary details immediately from the "motivation"