Boost logo

Boost :

From: faisal vali (fvali_at_[hidden])
Date: 2003-06-04 00:35:35

Paul Mensonides wrote:
> > -----Original Message-----
> >
> > #define C C
> >
> > #if C
> > X()
> > #endif
> >
> > Wave spits out that this is an ill-formed preprocessor expression -
> The expression of an #if (or #elif) directive should get four passes.
> The first pass handles the defined operator. Each instance of defined
> XYZ and defined(XYZ) is replaced with 0 or 1. The second pass does
> macro expansion. For the expression above, macro expansion results in
> C. The third pass converts all remaining identifier tokens, with the
> exception of true and false, with 0. (Note that that alternative tokens
> are not identifiers, so this doesn't apply to them.) Finally, yielding
> the expression 0. The fourth pass finally evaluates the expression,
> which should evaluate to false.

This was my understanding too, which is why I claimed that my wave
executable might be buggy. Does your wave executable also puke on the
above snippet - if it does not, then i think my wave's behavior may be
an artifact of my "dirty" fix to get the code to compile by declaring a
primary template in order to make the explicit specialization of
"policy..." well-formed. I have not studied the source code for wave
yet - and before (or if) i do, i was hoping if someone could confirm or
deny experiencing the same behavior with their wave executable.

Faisal Vali

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