digitalmars.D.bugs - [Issue 3652] New: Allow implicit casting of dynamic array slices of known size to static array
- d-bugmail puremagic.com Dec 26 2009
- d-bugmail puremagic.com Dec 26 2009
- d-bugmail puremagic.com Dec 26 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3652 Summary: Allow implicit casting of dynamic array slices of known size to static array Product: D Version: 2.036 Platform: Other OS/Version: Linux Status: NEW Severity: enhancement Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: baryluk smp.if.uj.edu.pl --- Comment #0 from Witold Baryluk <baryluk smp.if.uj.edu.pl> 2009-12-26 14:17:17 PST --- Consider this: void foo(float[4] x) { return x[0]+x[1]*x[2]-x[3]; } void main() { float[] xs = read_floats_from_file(); foreach (i; 0 .. xs.length-4) { foo(xs[ i .. i+4]); } } or simpler thing to calculate in compile time: void main() { float[] xs = read_floats_from_file(); foo(xs[ 0 .. 4]); } In both cases compiler will say: cannot implicitly convert expression (_adDupT((& _D11TypeInfo_Af6__initZ),qs[0u..4u])) of type float[] to float[4u] or something similar. It is hard to see why this is really needed. How about allowing (and performing) implicit cast to static array if compiler knows (or can easly infere) size of the slice and it aggree with target type? Of course there will be situations where we have no knowledge about it: void main() { float[] xs = read_floats_from_file(); uint a = rand() % xs.length; foo(xs[ 0 .. a ]); } But allowing implicit cast also can detect other errors: foreach (i; 0 .. xs.length-4) { foo(xs[ i .. i+3]); } Compiler in such situation will complain not because we are using float[] to float[4] conversion, but because we are trying to call float[4] function using float[3] slice. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 26 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3652 --- Comment #1 from Witold Baryluk <baryluk smp.if.uj.edu.pl> 2009-12-26 14:18:34 PST --- So essentially problem is that slices are just dynamic arrays. So bringing back the topic of making slices different/distinctive types. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 26 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3652 --- Comment #2 from Witold Baryluk <baryluk smp.if.uj.edu.pl> 2009-12-26 14:21:40 PST --- It is even worse that i was innitially thinking: explicit casting doesn't work: series2.d(113): Error: e2ir: cannot cast qs[0u..1u] of type float[] to type float[1u] -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 26 2009









d-bugmail puremagic.com 