As far as I can tell, MSVC allows the relevant conversions for all pointer types. Found compiling a Windows SDK header.
I've verified that the updated errors in MicrosoftExtensions.cpp match the ones that MSVC actually emits, except for the one with a FIXME. (Not sure why this wasn't done for the patch that added the tests.)
Hmm... this one was quite suspicious. In this case, it was choosing the 'int' returning overload, MSVC doesn't do that here, it seems to always choose the best match without the __unaligned (as you're doing now).