@foone That would totally work in C++, and is a thing often referred to as "tag invoke". It passes in a "tag" which selects the variant to call.
Never thought about how that would reverse engineer, but this seems to match. That's not against the type system though, it's using the type system to do something that it wasn't originally designed for.