Boost logo

Boost :

Subject: Re: [boost] Clang 4.0.0 MPL error in Boost next.hpp and prior.hpp
From: Peter Dimov (lists_at_[hidden])
Date: 2017-03-26 11:25:03


> 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.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk