T[new] misgivings

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Thu Oct 15 21:00:49 PDT 2009


Jeremie Pelletier wrote:
> Andrei Alexandrescu wrote:
>> Walter Bright wrote:
>>> Andrei Alexandrescu wrote:
>>>> This goes into something more interesting that I thought of after 
>>>> the conversation. Consider:
>>>>
>>>> T[new] a;
>>>> T[] b;
>>>> ...
>>>> a = b;
>>>>
>>>> What should that do?
>>>
>>> Error. T[] cannot be implicitly converted to T[new]
>>
>> Then your argument building on similarity between the two is weakened.
>>
>> T[new] a;
>> T[] b;
>> ...
>> a = [1, 2, 3];
>> b = [1, 2, 3];
>>
>> Central to your argument was that the two must do the same thing. 
>> Since now literals are in a whole new league (they aren't slices 
>> because slices can't be assigned to arrays), the cornerstone of your 
>> argument goes away.
>>
>>
>> Andrei
> 
> Simple, assignment to a fails 'cannot cast T[3] to T[new]'.
> 
> It's already consistent with slices of different types:
> char[] a = "foo"; // error, cannot cast immutable(char)[] to char[]
> int[new] b = [1, 2, 3]; // error, cannot cast int[3] to int[new]
> 
> you have to do:
> char[] a = "foo".dup;
> int[new] b = [1, 2, 3].dup;
> 
> Jeremie

I'd be _very_ unhappy to have to explain to people how in the world we 
managed to make the most intuitive syntax not work at all.

Andrei



More information about the Digitalmars-d mailing list