Boost logo

Proto :

Subject: Re: [proto] [proto-11] expression extension
From: Joel Falcou (joel.falcou_at_[hidden])
Date: 2012-06-04 02:47:05

On 03/06/2012 09:41, Eric Niebler wrote:
> Hey all, this is just an FYI. I've been hard at work at a ground-up
> redesign of proto for C++11.

Great news !

> 1) Rather than writing expression wrappers, you'll be writing actual
> expression types. Proto provides helpers that make this easy. To get the
> basics, inherit from basic_expr. To get tree-building assign, subscript,
> and function call operators, inherit from expr_assign, expr_subscript
> and expr_function respectively.

I make a lot of sense actually.

> 2) Rather than writing generators, you'll be defining per-domain
> make_expr function objects that accept a tag and a number of children.
> How you decide to assemble these into an expression is up to you, but
> you can use a helper like make_custom_expr above to simplify things.

It's very important those make_expr functino object could be extended
externally of any structure. By the look of it, it looks like
it'll behave similary to the switch_ construct, aka a template functor
inside a struct to be extended outside.

> 3) There are other per-domain customization points: (a) store_value,
> which specifies the capture policy for non-proto objects in expressions,
> and (b) store_child, which specifies how children are stored. For both
> (a) and (b), the default is: lvalues are stored by reference and rvalues
> are stored by (moved from) value. Expressions can safely be stored in
> auto variables by default.

So I guess it also fix the problem we faced with Mathias on having to
store everythign by value to have proper chains of expression building
function works properly ?

> Thanks all for now. Feedback welcome. If you have wishlist features for
> proto-11, speak now.

On eo fmy PHD student will start converting Quaff to C++11 this july, so
depending on your advancement on Proot-11, we may give it a shot an
dreport any missing features.

Proto list run by eric at