I want to use VariantChangeType to change a short integer variant (VT_I2) to a long integer variant (VT_I4)

So i do :


VariantChangeType(&dest,&src,VT_I4);




But it seems that if dest is VT_EMPTY then the function returns DISP_E_TYPEMISMATCH.

WHY ? dest is a destination and even if empty it can be coerce into a VT_I4 (no memory pointer here) !!!