Well, the answer to both is "yes". Essentially, the non-standard
pre-processor behavior is enabled when clang is targeting an MSVC
environment. This can happen if you run 'clang
--target=x86_64-windows-msvc', for example. The good news is that _MSC_VER
should always be defined when we are doing non-standard things, so you can
use that as a feature test.
It is technically possible for the user to invoke clang in a way that
enables MSVC pre-processor quirks without defining _MSC_VER, but that is
not expected to work with code in the wild.
Thanks for your explanation. I will, for all intents and purposes, use _MSC_VER to indicate by clang that the non-standard preprocessor behavior is in effect no matter if clang, clang++, or clang-cl is invoked in Windows.