From: Daniel James (daniel_at_[hidden])
Date: 2004-08-16 17:03:42
Paul Mensonides wrote:
> Note, BTW, that Borland's non-integrated command line preprocessor (i.e. not the
> compiler itself in preprocess-only mode) is a pretty good preprocessor. It
> doesn't have the weird identifier-splicing bug that makes the straightforward
> version of IS_UNARY (etc.) not work. Last time I checked, it can even handle
That caught me out once, I thought I had some macros working on Borland,
but it was only working on the separate preprocessor.
> Regarding the instability: the macro itself is stable, but the input is not
> which can foul up the internals. The library itself does a ton of extra
> scaffolding to force expansion order when it is important (for VC and MWCW < 9)
> it does this globally across the entire library. However, that scaffolding does
> not exist in user code (nor should it have to if at all possible), and IS_UNARY
> (etc.) cannot force an arbitrary amount of expansion to account for it. You'd
> be surprise how much stuff doesn't expand when it should on those preprocessors
> that happens to get picked up later.
Thanks for the explanation. It'll be a big help.
> (You might have guessed that I really
> really hate those preprocessors.)
I can understand, I've seen the workarounds. I'm really impressed by how
well the boost preprocessor library hides all of this.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk