Well, I have not thought about auto as a return type, I am surprised that it works better than array[a.len + b.len, T].
Could you add a static block above `const a3 = a1.concat(a2)` to ensure it is done at CT ? Is a.len and b.len also computed at CT ? Maybe if you change the parameters to a varargs of arrays (or openarrays), you could add it to std/sequtils ?