On 01/06/2014 07:25 AM, Ole Svensson wrote:
> Hi,
> 
> for my vector expression DSEL I would like to be able to write multi 
> assignment expressions like
> 
> y = x = 3.0 * z;
> 
> that effectively translate to 
> 
> for(i=0; i<n; ++i) {
>    y[i] = x[i] = 3.0 * z[i];
> }
> 
> Currently, my proto-fied vector class has an operator=() that calls the 
> respective context to evaluate the RHS of an assignment operation. With multi 
> assignment expressions, I obviously have to include the assignment operator 
> into my grammar. If I do this, how can I execute a context when I just write 
> "y = x = 3.0 * z;"?
> 
> Thank you very much!

Your chosen syntax is a little problematic because for any given
assignment operation, you can't tell statically if it's the left-most
(and should trigger evaluation) or not. One possibility would be to have
assignment return a temporary object, and have the evaluation happen in
the destructor. I don't encourage doing non-trivial work in a destructor
however. Special care would be needed to keep exceptions from leaking out.

I recommend finding a different syntax.

Eric

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

Reply via email to