On Fri, Dec 30, 2011 at 7:01 AM, Eric Niebler <e...@boostpro.com> wrote:
> Are you certain your problem is caused by using operator() for grouping?
> I think this is just a very big expression template, and any syntax you
> choose for grouping will result in long compile times and heavy memory
> usage.

Yes, that's what I mean, the way grouping works now always creates a
huge expression.

> Can I ask, what version of Boost are you using? I see you #define
> BOOST_PROTO_MAX_ARITY to 10 at the top. In recent versions of Proto, 10
> is the default. And newer Proto versions already make use of variadic
> templates for operator() if available.

I'm using 1.46.1 for now. Good to hear variadic templates are already
available for this, do I need to do anything explicit to enable them,
such as add a compile option?

> Other things to think about: does this really need to be all one big
> expression, or can parts of it be broken up and type-erased, as with
> spirit::qi::rule?

Not sure how this type-erased method works, but all of the expressions
are ran in a tight loop, so I'd like to avoid the overhead of having
to go through a virtual call. Also, I use some introspection across
the whole expression to determine which variables exist.

Cheers,

-- 
Bart
_______________________________________________
proto mailing list
proto@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/proto

Reply via email to