This snippet compiles. Even if dsds
and sadsad
are defined nowhere, this code compiles.
import std.typecons : Tuple;
sadsad executeFunction(Mtypes...)(dstring func, Tuple!(Mtypes) args)
{
static foreach(type; typel.keys)
{
mixin(typel[type] ~ " ret"d ~ type ~ ";");
}
dstring returnType = "Number"d;
Switch: final switch(returnType)
{
static foreach(type; typel.keys)
{
case type:
mixin("alias ret = ret"d ~ type ~ ";");
break Switch;
}
}
dsds ret;
return ret;
}
The reason why this compiles is because of the varidic template parameter, Mtypes
.
Either there is something I'm missing, or the compiler completely breaks when it sees varidic template arguments.