Request: a more logical static array behavior

monarch_dodra monarchdodra at gmail.com
Thu Aug 15 02:55:50 PDT 2013


On Thursday, 15 August 2013 at 02:30:54 UTC, Jonathan M Davis 
wrote:
> On Thursday, August 15, 2013 02:57:25 Tommi wrote:
>> Thus, my point is this:
>> Shouldn't this magical property of static arrays (implicitly
>> converting to dynamic array during type deduction) extend to 
>> all
>> type deduction situations?
>
> No. If anything, we should get rid of the implicit conversion 
> from a static
> array to a dynamic one. It's actually unsafe to do so. It's 
> just like if you
> implicitly converted a local variable to the address of that 
> local variable
> when you passed it to a function that accepted a pointer. IMHO, 
> it never
> should have been allowed in the first place. At least with 
> taking the address
> of a local variable, the compiler treats it as @system. The 
> compiler doesn't
> currently do that with taking the slice of a static array.
>
> http://d.puremagic.com/issues/show_bug.cgi?id=8838
>
> If you want a dynamic array from a static one, then slice it. 
> That works just
> fine with templated functions, and makes what you want 
> explicit. Also, making
> it so that IFTI instantiated templates with the dynamic array 
> type when given
> a static array would make it so that you would have to 
> explicitly instantiate
> any templates where you actually wanted to pass a static array, 
> which is a
> definite negative IMHO.
>
> At this point, I don't really expect that it'll be changed so 
> that static
> arrays do not implicitly convert to dynamic ones (much as it 
> would be ideal to
> make that change), but I really don't think that we should do 
> anything to make
> the problem worse by adding yet more such implicit conversions.
>
> - Jonathan M Davis

+1


More information about the Digitalmars-d mailing list