partial initialization of fixed size ("static") arrays

frame frame86 at live.com
Sat Aug 14 18:39:33 UTC 2021


On Saturday, 14 August 2021 at 14:04:47 UTC, kdevel wrote:
> On Saturday, 14 August 2021 at 13:01:13 UTC, frame wrote:
>> I would say case [...] 3 is not [a bug]. It's just the element 
>> type conversion and mismatched lengths of the ranges.
>
> ~~~
>    char [7] d7 = "x"; // okay
>
>    string s = "x";
>    char [7] c7 = s; // throws RangeError
> ~~~
>
> What justifies that the compiler behaves differently on two 
> terms ('s', '"x"') which are of equal size, type, length and 
> value?

One is pure initialization, CTFE magic for strings or something 
like that. The other one is an assignment of an already created 
range where length check kicks in. The compiler is fine with that 
as it compiles. It's the bound checker at runtime level that 
bails out.


More information about the Digitalmars-d-learn mailing list