> Nobody wants to subclass your Event type, if I have to do it, you've failed at your job.
Because it's well known that subclassing is used only for Event type and never EVER anything else requires polymorphism #irony.
The only part of this discussion where you are right is that closed polymorphism (std:: variant) is better than open polymorphism when it can be applied.
And even there, your proposed implementation is utter garbage that leaks memory and that I would refuse straight away in any PR.