Boost logo

Boost :

Subject: [boost] [wave] preprocessor directives in output
From: Eric Niebler (eniebler_at_[hidden])
Date: 2014-01-20 20:46:50


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?

Any help appreciated.

Eric




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