Forgot to mention in the notes, but currently the C++ generated code differs completely between MIDL and WIDL in WinRT mode.
This changes the generated C++ code too, it was probably broken before, and it's still probably broken after.
I don't think it's realistic to try addressing it, as the MIDL C++ code heavily relies on external WinRT C++ runtime headers.