compile-time opIndex

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Thu Dec 18 08:49:40 PST 2014


On 12/18/14 11:34 AM, Dicebot wrote:
> On Thursday, 18 December 2014 at 16:15:09 UTC, Steven Schveighoffer wrote:

>> I don't disagree with the idea of having operators inside templates, I
>> just don't know if it solves the problem I was looking at.
>
> Your original snippet seems to implementable within proposed DIP if you
> replace struct with raw template. You will lose struct properties like
> having actual instance but those don't exist for built-in tuples either.

So the discussion is here:

https://github.com/D-Programming-Language/druntime/pull/1070

Essentially, we want to implement a range which gives access to 
builtin-AA elements via a pair or tuple. The first element will be the 
key, the second the value.

But we also want to allow changing the value, and getting the key by 
reference (if, for instance, it's a huge struct).

The big issue here is that people are worried about putting in some 
'hacky' type returned from 'front' for this range, when "builtin tuples 
are around the corner." We don't want to have people get used to having 
one API, and then have to switch to another API when real tuples are 
released.

So having an actual concrete instance is important here. 'front' doesn't 
return a type it returns a value tuple.

Oh, and we can't use std.typecons.Tuple because that's in Phobos, this 
is druntime.

(and my assertion is that front.key and front.value should work instead 
of having to use front[0] and front[1]!)

-Steve


More information about the Digitalmars-d mailing list