Boost logo

Boost :

From: Eric Niebler (eric_at_[hidden])
Date: 2007-05-15 19:29:17


Maurizio Vitale wrote:
> What about introducing a macro:
>
> #define BOOST_PROTO_WRAP(DOMAIN,EXPRESSION) \
> namespace boost { namespace proto { \
> template<typename E> \
> struct generate<DOMAIN, E> { \
> typedef EXPRESSION<E> type; \
> static type make (E const& expr) { \
> return type (expr); \
> } \
> }; \
> } }
>
> as far as I can tell one does never need something different from the above boilerplate code.
> (otherwise I'd like to see examples, for my own education)
>
> Not a big deal, I know, but looks nicer (and sound nicer in the docs as well, I think).

I agree, this part of proto isn't as nice as it could be. I've
considered making the expression generator a template parameter to the
proto::domain, something like:

struct my_domain
   : proto::domain< struct my_grammar, struct my_generator >
{};

This way, you wouldn't have to open proto's namespace to specialize
proto::generate. I haven't thought too hard about it, though. I do know
that I would like to avoid macros in proto's interface as much as possible.

> Have fun in Colorado!

Workin' on it! :-)

-- 
Eric Niebler
Boost Consulting
www.boost-consulting.com

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