The problem with clang targeting the MSVC ABI, as far as Boost is concerned, is that it erroneously implements the non-standard VC++ preprocessor. This makes it all but useless for using with Boost. That it should have even been designed to do this for all macros, rather than just for the macros it needed when processing VC++ and Windows headers, is its major downfall. When you have to emulate something that is already non-standard, and for which no internal knowledge is available, you are already on the wrong path.
You can tell C2 clang to not use MSVC compatibility and VS2015 Update 2 and later's headers will now compile cleanly. I would assume VS2017 is the same. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/