Boost logo

Boost :

Subject: Re: [boost] [wave] preprocessor directives in output
From: Eric Niebler (eniebler_at_[hidden])
Date: 2014-01-21 14:16:35

(John, please don't top-post on the Boost mailing list. See the Boost
Discussion Policy at

On 1/21/2014 8:25 AM, Fletcher, John P wrote:
> On 21 January 2014 16:13, Eric Niebler wrote:
>> On 1/20/2014 11:27 PM, pmenso57_at_[hidden] wrote:
>>> Provided the code was only in an #if block used for pre-generation (or the code is *only* used for pre-gen), you could have wave produce that. E.g. use an object-like macro to get a non-macro-operator hash mark:
>>> #define HASH #
>>> vector(vector&& rhs)
>>> : vec(std::forward<vector_n>(rhs.vec)) {} HASH endif #endif
>> Clever, but sadly the code is not only used for pregeneration. It's possible to compile Fusion with the "don't use preprocessed headers"
>> flag, in which case this header gets used directly.
>> <sigh>
> Eric
> Could that second use case use a different copy of the code?

I figured this out. Using Paul's trick, I can do this:


#if defined(__WAVE__) && \
    (defined(__WAVE__) && \
        vector(vector&& rhs)
            : vec(std::forward<vector_n>(rhs.vec)) {}
// more code that uses rvalue references
#if defined(__WAVE__) && \


Ugly as sin, but it seems to give the desired results.

Eric Niebler

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