partial initialization of fixed size ("static") arrays
Tejas
notrealemail at gmail.com
Sat Aug 14 14:55:26 UTC 2021
On Saturday, 14 August 2021 at 14:33:42 UTC, kdevel wrote:
> On Saturday, 14 August 2021 at 14:18:57 UTC, Tejas wrote:
>> 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?
>>
>> They are not.
>>
>> assert(string.sizeof != char.sizeof);
>
> The terms are s and "x":
>
> ~~~r.d
> void main ()
> {
> string s = "x";
> assert (s.sizeof == "x".sizeof);
> }
> ~~~
It did implicit conversion on the literal but not the variable.
Basically,
```d
char[7] a = cast(char[7])"x"; // works
string s = "x";
char[7] b = cast(char[7])s; //fails
```
That's my best guess.
Hopefully someone more experienced chimes in.
More information about the Digitalmars-d-learn
mailing list