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-25 15:30:20

Paul A. Bristow wrote:

> In file included from I:\modular-boost\boost/mpl/next.hpp:17:
> I:\modular-boost\boost/mpl/next_prior.hpp:44:23: error: too many arguments
> provided to function-like macro invocation
> ^

I tried to compile

#include <boost/mpl/list.hpp>
#include <boost/mpl/push_front.hpp>

int main()
    namespace mpl = boost::mpl;

    using L = mpl::list<>;
    using L2 = mpl::push_front<L, void>;

with the build-in Clang/C2, hit

1>../boost-git/boost\boost/mpl/next_prior.hpp(44,1): error : pasting formed
'BOOST_PP_TUPLE_ELEM_O_3(', an invalid preprocessing token



at the top, same. The "strict" PP configuration is used, it just doesn't
work for some reason I couldn't figure out. It's possible
that -fms-extensions also changes the preprocessor and this breaks PP, but
without it, MS's headers don't compile.

If you tell MPL to not use PP though:

#include <boost/mpl/aux_/config/preprocessor.hpp>

this simple example works. I've no idea whether more complex ones will.

But if you don't insist on an MS-compatible Clang and can stomach the old
and busted 3.9, you can just use the Cygwin Clang. That's what I do.

Boost list run by bdawes at, gregod at, cpdaniel at, john at