I don't buy the logic about going back and forth. The draft is meant to be easy to follow. To understand the whole thing, you just need to find `myint_IIncIntVtbl`, check the generated implementation (which is nothing more than a direct call to the actual implementation), then go to that implementation and you’re done.
With your proposal, you’d have to go to the vtbl, find the implementation, and then wonder about the `*_funcs` struct. From there, you’d go to its declaration, then to the implementation, find the `*_FUNCS_INIT` macro, check that macro to figure out the implementation name, and finally go there. I don’t see that as an improvement. In fact, I think that’s actual indirection, and it’s something we should avoid.
I wasn’t suggesting separate IDLs each class. In fact, I think a single one would be enough for most DLLs, and in most cases we already have such an IDL for registration purposes.
That said, I’m not attached to my draft at all. I’m open to other solutions, but I do hope we can find something cleaner than the current version of this MR.