Proof of concept - library AA
    Martin Nowak via Digitalmars-d 
    digitalmars-d at puremagic.com
       
    Wed May 27 07:12:02 PDT 2015
    
    
  
On Sunday, 24 May 2015 at 15:13:41 UTC, Vladimir Panteleev wrote:
> Could you elaborate on what these magic semantics are?
>
>> and no easy solution exists for the ++aa[key1][key2] case.
>
> Is this specific to the pre-increment? aa[key1][key2]++ is 
> generally a useful pattern.
This applies to pre/post increment as well as assignment and 
opOpAssign.
When an lvalue is needed the compiler will call a special runtime 
function GetX to obtain an lvalue for aa[key1], i.e. the entry 
will be default initialized iff missing.
If the expression is an rvalue though (aa[key1][key2]), a missing 
key1 will trigger a range error.
In an opIndex(Key) you have no idea whether the whole expression 
I an lvalue or an rvalue.
IIRC the construction/assignment of a value is also handled 
specifically.
    
    
More information about the Digitalmars-d
mailing list