Request: a more logical static array behavior

Jonathan M Davis jmdavisProg at gmx.com
Wed Aug 14 19:30:44 PDT 2013


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


More information about the Digitalmars-d mailing list