I am the current maintainer and partial contributor of the Boost PP ( Preprocessor ) library and the author/maintainer of the Boost VMD library. Both libraries are C++ macro libraries for making it easier to work with preprocessor macros.
Clang on Windows targeting VC++ ( clang-cl.exe ) attempts to emulate the non-standard VC++ preprocessor. In Boost PP I have set clang on Windows targeting VC++ ( both __clang__ and _MSC_VER are defined ) to act just like the VC++ preprocessor as far as Boost PP is concerned. Boost PP has a number of workarounds for preprocessors which do not conform correctly to the C++ standard preprocessor rules, among which VC++ is the largest culprit. These workarounds allow VC++ to compile Boost PP code, without which VC++ would fail because it is not a standard conforming preprocessor.
With the appropriate workarounds VC++ can compile all of Boost PP tests without error, although with plenty of false warnings. The false warnings cannot be worked around, but do not affect the final macro code.
When attempting to compile Boost PP tests with clang-cl there are a number of errors. I cannot report these errors to clang because I cannot tell where these errors are being generated from in Boost PP. The reason for this is that clang-cl does not show me its expansion of macros to the point of the error. All it tells me is that when expanding some higher level macro a particular preprocessor errors occurs somewhere lower down. Without being able to pinpoint exactly where clang is producing its error I cannot report clang's action as a bug in its VC++ emulation. Is there a solution to this in getting clang to show me where the error is actually occurring ?