On Thursday, 7 January 2021 at 15:27:09 UTC, Dukc wrote:
On Thursday, 7 January 2021 at 13:03:54 UTC, Luhrel wrote:
2. if staticArrFunc returns a size_t, then the problem can be simplified as:
```
staticArrFunc(cast(int[$])[1,2,3]); // no need to cast :
staticArrFunc([1,2,3]); // already works like that (if staticArrFunc takes a int[3])
```

If your DIP is implemented, what you say is true. But the point is that right now it means a different thing - a cast to static array of the length of `something` (in the full example), not to length of `[1,2,3]`. The point is that your DIP will silently change the behaviour of code like this.

I understand want do you mean, but we're currently unable to use the `$` operation from `something` inside a cast.

```
int staticArrFunc(int[6] a)
{
    return a[0];
}

void main()
{
    int[] s = [1, 2, 3, 4, 5, 6];
    int[] y = s[0 .. staticArrFunc(cast(int[$]) [1,2,3])];
// Error: CTFE internal error: trying to access uninitialized var
}
```

Do you have a currently working example, that would potentially be broken by my DIP ?


I do agree that this is such a rare enough occurence that we might be best off just accepting it. But it needs to be mentioned in the DIP.

I don't want a DIP that will break other people codes.


Reply via email to