Boost logo

Boost :

From: Paul Mensonides (pmenso57_at_[hidden])
Date: 2006-01-24 03:48:04


> -----Original Message-----
> From: boost-bounces_at_[hidden]
> [mailto:boost-bounces_at_[hidden]] On Behalf Of Tobias Schwinger

> So things may break (for odd reasons) if the macro arguments
> are in turn macros.

*sometimes* It doesn't appear to be predicable in the general case. It should
be safe enough if the input is literally (e.g.) (unary) or not a unary
parenthetic expression. E.g.

#define A(x) IS_UNARY(x)

A((...))
A(~)

Something like this should consistently work. Something like

A(MACRO())
IS_UNARY(MACRO())

might and might not.

> Guessing from the Boost.Preprocessor source IS_*ARY seem to
> /basically/ work unless I'm using Borland.

Or IBM or Sun which use the Borland configuration. (I don't even think those
macros exist in the Borland configuration!?)

> So if the input is intended to be fed by the user directly
> (without more layers of PP metaprogramming or any macros in
> it) things would be considerably safe, wouldn't they?

Yes, I think so.

> > Take a look at 'cat.hpp'.
> > [...]
>
> Aha - interesting! I've been wondering what this code does
> before... So it's about stabilizing the expansion order.

Yeah, it's a hack that is broadly applied to the library.

> > philosophy is something like, "If component XYZ is
> generalizable enough to be
> > used by the library itself in multiple places, then it
> should be exposed as a
> > proper interface so that client code can use if desired."
>
> Sounds like these parts will probably be the most fascinating
> ones to explore.

To me they are--they are often the ones that do the gross manipulation. To me,
the important thing about Chaos is not the functionality presented to some
client, but rather the idioms and techniques that it contains.

> The code looks extremely beautiful, but I hadn't had the time
> to decode all the
> idioms involved to really understand it, yet ;-(.

If you want to understand it, feel free to ask me. Some things are very hard to
understand without a little help and background.

> Thanks again for your reply. If there was a "most informative
> list member award"
> you'd be most certainly one of the top candidates ;-).

Thanks. I guess all you need to do is to master a really esoteric field!

Regards,
Paul Mensonides


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