Was this supposed to be allowed?

z at z.com
Wed Sep 15 13:52:40 UTC 2021


```D
float[2] somevalue = somefloat3value[] + cast(Unqual!float[2]) 
[somesharedfloatarray1[i],somesharedfloatarray2[ii]];
```
Older LDC/DMD releases never complained but now that i upgraded 
DMD, DMD-compiled builds suffer from runtime assert error 
`core.internal.array.operations.arrayOp!(float[], float[], 
float[], "+", "=").arrayOp at 
.....\src\druntime\import\core\internal\array\operations.d(45) : 
Mismatched array lengths for vector operation `

Explicitly specifying `somefloat3value[0..2]` now works, and it 
seems that this assert check is an addition to a recent DMD 
version's `druntime`, does it means that this was a recent change 
in the language+runtime or just a retroactive enforcement of 
language rules that didn't use to be enforced?
Big thanks.


More information about the Digitalmars-d-learn mailing list