Boost logo

Boost :

Subject: Re: [boost] [wave] preprocessor directives in output
From: Joel de Guzman (djowel_at_[hidden])
Date: 2014-01-21 01:29:54


On 1/21/14, 9:46 AM, Eric Niebler wrote:
> I'm looking at automating the regeneration of Fusion's preprocess
> headers with the wave tool. Currently, it's impossible because of stuff
> like this (from container\vector\vector.hpp):
>
> #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
> vector(vector&& rhs)
> : vec(std::forward<vector_n>(rhs.vec)) {}
> #endif
>
> When the wave driver is run, either BOOST_NO_CXX11_RVALUE_REFERENCES is
> defined, in which case the block of code gets left out, or else it
> isn't, in which case the block of code is left in. Both are wrong. What
> should happen is that the #if and #else directives should be present in
> wave's output.
>
> I can keep wave from expanding certain named macros with the -N switch,
> but there doesn't seem to be a way to selectively keep wave from
> evaluating #if/#else directives. Or is there?

I asked Hartmut this same question before. IIRC, it's an issue that has no
workaround (or fix) yet. I hope I am wrong.

Regards,

-- 
Joel de Guzman
http://www.ciere.com
http://boost-spirit.com
http://www.cycfi.com/

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