This is a change between C and C ++, where Microsoft previously applied C rules. As noted in a response to remyabel, this has been fixed.
In C, casting voidor simply using an expression as an instruction in itself (as in incomplete;) still includes the lvalue-to-rvalue conversion. C calls it a little differently, but it is the same conversion.
++ void lvalue-to-rvalue. , ++ lvalues, , lvalue-to-rval,
volatile int i;
i = 1;
, .
lvalue-to-rvalue , , , .