On Tuesday, 18 July 2017 at 08:46:50 UTC, Jack Applegame wrote:
On Monday, 17 July 2017 at 17:38:23 UTC, Nordlöw wrote:
I'm want to define a specialization of `append()` that takes
only static arrays as inputs and returns a static array being
the sum of the lengths of the inputs.
Have anybody already implemented this?
If not, I'm specifically interested in how to most
conveniently infer the length (as an enum) of the returned
static array from the `.length`s of inputs (which of course
must be enum-values too).
My recursive version:
auto concat(T, size_t N, ARRS...)(auto ref T[N] a, auto ref
ARRS arrs) {
static if(arrs.length == 0) {
return a;
} else {
T[N + arrs[0].length] r = void;
r[0..N] = a[];
r[N..$] = arrs[0][];
return concat(r, arrs[1..$]);
}
}
unittest {
int[3] a1 = [1, 2, 3];
int[3] a2 = [4, 5, 6];
int[3] a3 = [7, 8, 9];
static assert(is(typeof(concat(a1)) == int[3]));
assert(concat(a1) == [1, 2, 3]);
static assert(is(typeof(concat(a1, a2, a3)) == int[9]));
assert(concat(a1, a2, a3) == [1, 2, 3, 4, 5, 6, 7, 8, 9]);
}
whhhahhh template bloat!!!!!!!!!!!!!!!!!!!!