原文
import std.meta : AliasSeq;
template staticMap2(alias fun, args...)
{
alias firsts = args[0 .. $ / 2];
alias seconds = args[$ / 2 .. $];
static assert(firsts.length == seconds.length,"长度不匹配");
alias staticMap2 = AliasSeq!();
static foreach (i; 0 .. firsts.length) {
staticMap2 = AliasSeq!(staticMap2, fun!(firsts[i], seconds[i]));
}
}
struct S(T, size_t length) {
}
template Instantiate(T, size_t length) {
alias Instantiate = S!(T, length);
}
alias myTypes = AliasSeq!(int, double, long);
alias mySizes = AliasSeq!(1, 2, 3);
alias result = staticMap2!(Instantiate, myTypes, mySizes);
pragma(msg, result);
void main() {
}