Compiler Error C3732

'interface': a custom interface that fires COM events cannot inherit from IDispatch

An interface that supports COM events cannot inherit from IDispatch. For more information, see Event Handling in COM.

The following error generates C3732:

// C3732.cpp
#define _ATL_ATTRIBUTES 1
#include "atlbase.h"
#include "atlcom.h"

[module(name="test")];

// to resolve this C3732, use dual instead of object
// or inherit from IUnknown
[ object ]
__interface I : IDispatch
{
};

[ event_source(com), coclass ]
struct A
{
   __event __interface I;   // C3732
};

int main()
{
}