On 9/13/21 10:47 AM, user1234 wrote:
On Monday, 13 September 2021 at 14:33:03 UTC, user1234 wrote:
what else ?
when you have
```d
alias AA1 = int[int];
alias AA2 = AA1[int];
```
then you can write
```d
AA2 aa;
aa[0] = [0 : 0];
aa[0][0] = 0;
```
The `[0][0]` cannot be expressed using operator overloads (and a custom
map type that implements opIndexAssign).But this case is rather due to
the fact that druntime seems to do something a bit unusal here
(according to an old discussion that happend once on irc).
This is because the compiler calls a different hook depending on the
usage of the expression `aa[0]`. Which one it calls is not consistent.
There isn't an analog for indexing overloads.
A further example:
```d
int[int] aa;
aa[0]++; // ok
void foo(ref int x) {x++;}
foo(aa[1]); // range violation
```
-Steve