Does clang also warn on enum implicit conversion on assign or just pointer types?
Implicit conversion on assign between int and enums on assignment are fine. In MSVC ABI enums are signed unless their values require them to be unsigned (that's why a number of enums have *_FORCE_DWORD values). In this case, it's the same warning you'd get from passing int pointer as an unsigned int pointer argument.
A macro like that doesn't seem like an improvement to me. I pushed v2 which uses a more specialized helper function. Defaulting to 0 seems to be good enough here.