mir-core icon indicating copy to clipboard operation
mir-core copied to clipboard

staticArray and string

Open fabienmica opened this issue 3 years ago • 2 comments

staticArray does not compile when string with:

mir-core\source\mir\functional.d(57,12): Error: returning a escapes a reference to variadic parameter a

The code below compiles, removing the comment doesn't.

import mir.functional: staticArray;
import mir.ndslice;

auto resuF = mir.ndslice.cartesian([0,1,2], [0,1], [4,5,6]).flattened.map!staticArray;
writeln(resuF);
 
auto resuS = mir.ndslice.cartesian(["A", "B"], ["c","b"]).flattened;//.map!staticArray;
writeln(resuS);

Replacing current staticArray (in mir.functional) with code below works:

T[N] staticArray(T, size_t N)(T[N] a...)
   if (!is(T == string)) {
    return a;
}

T[N] staticArray(T, size_t N)(T[N] a...)
    if (is(T == string)) {        
        T[N] ret;
        static foreach(i; 0..a.length) ret[i] = a[i];
        return ret;
    } 

fabienmica avatar Oct 04 '22 09:10 fabienmica

@fabienmica Could yo make MR with isDynamicArray!T instead of is(T == string)?

9il avatar Oct 04 '22 09:10 9il

ok will do

fabienmica avatar Oct 04 '22 09:10 fabienmica