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