|
Boost : |
Subject: Re: [boost] Conflicts when building libraries at root
From: Edward Diener (eldiener_at_[hidden])
Date: 2015-03-10 10:44:37
On 3/10/2015 4:08 AM, Andrey Semashev wrote:
> On Tuesday 10 March 2015 06:54:30 Damien Buhl wrote:
>> On 09/03/2015 23:20, Edward Diener wrote:
>>> On 3/9/2015 5:09 PM, Andrey Semashev wrote:
>>> [...]
>>>
>>>> There weren't any warnings before. Is this a result of a change in
>>>> Boost.PP?
>>>
>>> Yes, but they were already in 1.57. The changes added some new
>>> (BOOST_PP_IS_BEGIN_PARENS) and better functionality (the internal
>>> BOOST_PP_IS_EMPTY) to Boost PP, as well as fixing some corner cases with
>>> VC++ I discovered when testing VMD.
>>
>> The reason why this happens more in this build, is that the new
>> BOOST_FUSION_ADAPT macros uses BOOST_PP_IS_EMPTY for each field member
>> now. This is used to determine if the type was provided or has to be
>> deduced.
>
> Is it possible to avoid BOOST_PP_IS_EMPTY? For example, use a keyword instead
> of testing for an empty string?
>
>>> Turning off C4003 globally for VC++ is the only solution to the VC++
>>> warnings I could ever discover. I attempted to turn off the warnings in
>>> the macros where they occur, but VC++ just ignores that. Evidently the
>>> warnings can only be turned off globally or possibly at the very
>>> top-level macro which eventually causes them.
>>
>> Do you think I could add specific pragmas to disable C4003 where I use
>> BOOST_PP_IS_EMPTY ?
>
> I suspect pragmas should envelop the place where the macro unfolds. In this
> case it's Boost.Phoenix. But in general this is user's code. And __pragma is
> not available in MSVC 8.
I tried __pragma within the affected Boost PP macros for VC++ for the
C4003 warnings but the VC++ preprocessor thinks it is macro code and
cannot process it. I know the documentation claims that it works but I
could never get it to do so when using Boost PP.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk