Edward Diener wrote:
I have updated Boost PP on the develop branch to support the -fno-ms-compatibility mode of clang targeting VC++ or clang/C2.
...failed updating 1 target... ...skipped 2 targets... ...updated 133 targets...
For reference, results in -fms-compatibility: ...failed updating 45 targets... ...skipped 46 targets... ...updated 45 targets... And same, but using the strict config here as well: ...failed updating 2 targets... ...skipped 3 targets... ...updated 131 targets... So, as I suspected, detecting -fno-ms-compatibility using __GNUC__ makes things worse. -# elif defined(_MSC_VER) && defined(__clang__) && defined(__GNUC__) // -fno-ms-compatibility mode +# elif defined(_MSC_VER) && defined(__clang__) -# elif defined(_MSC_VER) && defined(__clang__) && defined(__GNUC__) // -fno-ms-compatibility mode +# elif defined(_MSC_VER) && defined(__clang__) -# if defined _MSC_VER && _MSC_VER >= 1400 && !(defined(__clang__) && defined(__GNUC__)) && (defined(__clang__) || defined(__INTELLISENSE__) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1700) || !(defined __EDG__ || defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI)) +# if defined _MSC_VER && _MSC_VER >= 1400 && !(defined(__clang__)) && (defined(__clang__) || defined(__INTELLISENSE__) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1700) || !(defined __EDG__ || defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI)) The failing test is seq.cpp, with clang-linux.compile.c++.without-pth ..\..\bin.v2\libs\preprocessor\test\seq.test\clang-linux-14.1\debug\seq.obj In file included from test\seq.cpp:14: ..\..\libs/preprocessor/test/seq.cxx:213:42: error: too few arguments provided to function-like macro invocation BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_LIST_AT(BOOST_PP_SEQ_TO_LIST(SEQ_NONE),0)) == 1 END No idea why only seq.cpp fails, as seq.c should be the same.