On 3/26/2017 8:28 AM, Peter Dimov via Boost wrote:
Edward Diener wrote: On 3/26/2017 7:59 AM, Peter Dimov via Boost wrote:
TL;DR as I said yesterday, you need to to the changes unconditionally > for __clang__ and not look at __GNUC__.
I do not understand this. You are saying that __clang__ being defined and _MSC_VER being defined should always be strict compliance with variadics turned on but without any VC++ related fixes ?
Yes.
Before the changes:
clang -fms-compatibility: broken clang -fno-ms-compatibility: broken
After your changes (conditional upon __GNUC__):
clang -fms-compatibility: broken clang -fno-ms-compatibility: working
After same changes, unconditional:
clang -fms-compatibility: working clang -fno-ms-compatibility: working
What about the so-called emulation by clang of the non-standard VC++ preprocessor ?
There apparently exists no such emulation, at least as far as the PP tests show. Maybe it existed once, I don't know, but this doesn't seem to be the case today.
You are absolutely correct and I have updated Boost PP on the 'develop' branch accordingly. I did see a few errors testing clang 3.8.1 clang-cl, but with clang 3.9.1 clang-cl, clang 4.0 clang-cl, and the latest clang built from source clang-cl all Boost PP tests passed. I did use clang-win.jam. How did you get just clang.jam to work ? Doesn't it need VC++ support when using clang-cl ?