Supports the WRL infrastructure and is not intended to be used directly from your code.
template < typename T > struct RemoveIUnknown; template < typename T > class RemoveIUnknown : public T;
Makes a type that is equivalent to an IUnknown-based type, but has nonvirtual QueryInterface, AddRef, and Release member functions.
By default, COM methods provide virtual QueryInterface, AddRef, and Release methods. However, ComPtr doesn't require the overhead of virtual methods. RemoveIUnknown eliminates that overhead by providing private, nonvirtual QueryInterface, AddRef, and Release methods.