Dmitry Timoshkov dmitry@baikal.ru writes:
The patch actually removes the casts, the only cast that remains is the cast on the caller's side for the vtable pointer (which is much cleaner IMO since every COM object implements IUnknown), but the implementation itself is cast free, and looks now as an actual COM object.
Not really. An actual COM object would contain a pointer to a vtable for the correct interface. IUnknown is not much better than void*.