The more interesting question
deadalnix
deadalnix at gmail.com
Wed May 16 13:00:13 PDT 2012
Le 16/05/2012 12:10, Timon Gehr a écrit :
> On 05/16/2012 12:29 AM, deadalnix wrote:
>> Le 15/05/2012 20:34, Alex Rønne Petersen a écrit :
>>> Besides, this is probably not going to change anyway. We're focusing on
>>> stabilizing the language, not changing it.
>>>
>>
>> This always have been a design mistake to auto cast array in pointers.
>> This is silent fallback to usafe world, and what we want to avoid.
>>
>
> Getting a pointer to the beginning of a zero-terminated string literal
> is perfectly safe.
>
>> This has no benefit because using .ptr isn't really complex and make the
>> transition obvious.
>>
>> This has been raised many time in the past as being an issue, and it fit
>> nicely here.
>>
>
> This is a compile time error:
>
> int[] arr;
> int* p=arr;
>
> What exactly are you asking for?
>
void foo(const(char)*);
foo("bar");
isn't .
>> Having \0 terminated string in D were it has no usage is quite dumb.
>
> What you don't seem to get is that it actually has usage.
I understand that. I want to propose something more subtle.
Array in D are already typed according to what the are assigned. int[]
foo = [1, 2] and immutable(int)[] = [1, 2] are both possible). Isn't it
possible to \0 terminate string chen they are used as char* and not when
they are used as array ?
More information about the Digitalmars-d
mailing list