A possible solution for the opIndexXxxAssign morass

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Oct 13 09:21:20 PDT 2009


Steven Schveighoffer wrote:
> On Tue, 13 Oct 2009 11:16:01 -0400, Andrei Alexandrescu 
> <SeeWebsiteForEmail at erdani.org> wrote:
>> There's no chance of ambiguity because the parameter counts are 
>> different. Moreover, this scales to multiple indexes:
>>
>> a[b1, b2, ..., bn] = c
>>
>> gets rewritten as
>>
>> a.opAddAssign(b1, b2, ..., bn, c)
> 
> I'm guessing you meant opAssign here, or meant to write +=?

Oh, sorry. I meant to write +=.

>> What do you think? I may be missing some important cases or threats.
> 
> It's simple, and gets rid of all opIndex operators except for opIndex 
> itself.
> 
> The question then becomes, what if you wanted to overload this?
> 
> a[b][c] += d;
> 
> You can do a[b] returns a ref.  But then you now allow a[b] op x, 
> thereby possibly exposing a private piece of info.  This may or may not 
> be important.
> 
> I like the way your idea is going.

Great. Indeed the proposed solution leaves a[b][c] += d problematic, and 
also prevents this potential development:

a += b + c + d;

to be rewritten as:

a.opAddAssign(b, c, d);


Andrei



More information about the Digitalmars-d mailing list