Boost logo

Boost :

Subject: Re: [boost] [fusion] Compilation errors on Intel compiler (C++14)
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2016-12-06 14:09:13


On 12/06/16 20:39, Lee Clagett wrote:
> On Tue, 6 Dec 2016 19:46:03 +0300
> Andrey Semashev <andrey.semashev_at_[hidden]> wrote:
>
>> Hi,
>>
>> I'm seeing compilation errors coming from Boost.Fusion headers on
>> Sandia-intel-17.0-c++14:
>>
>> http://www.boost.org/development/tests/develop/developer/output/Sandia-intel-17-0-c++14-boost-bin-v2-libs-log-test-core-test-intel-linux-debug-threading-multi.html
>>
>> Notably, the same tests compile fine in C++11 mode on the same
>> compiler, which makes me think that is related to C++14 mode
>> specifically. Looking at the code, it seems the compiler makes
>> constexpr functions implicitly const-qualified even though it
>> shouldn't in C++14 mode, so it's likely a compiler bug. Still, is it
>> possible to add a workaround?
>>
>
> I recently added a config macro BOOST_FUSION_DISABLE_VARIADIC_VECTOR
> which reverts completely to the C++03 fusion::vector code. This will
> affect fusion::tuple also. Unfortunately I do not think it will solve
> this particular issue - one of the files is used by both fusion::vector
> versions.

I think reverting Boost.Fusion to C++03 is an overkill, given that in
C++11 mode all tests are green. So at least C++11 is supported well enough.

> Is it possible to override BOOST_CXX14_CONSTEXPR somehow?

Only if you define and use your own similar macro in Boost.Fusion. Or if
we decide that C++14 constexpr is broken enough in the compiler to
warrant the change in Boost.Config. The compiler passes all Boost.Config
tests[1] in C++14 mode, so I guess it supports C++14 mostly ok.

[1]: http://www.boost.org/development/tests/develop/developer/config.html


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