The following works but is somewhat of a hack...
module main;
import std.stdio, std.typetuple;
struct tTupleSplit
{
}
template tIndexOf(T, args...)
{
static if (staticIndexOf!(T, args) < 0) enum tIndexOf =
args.length;
else enum tIndexOf = staticIndexOf!(T, args);
}
template tMin(alias a, alias b)
{
static if (a < b) alias tMin = a; else alias tMin = b;
}
template tIf(alias cond, args...)
{
enum sp = tIndexOf!(tTupleSplit, args);
static if (cond)
alias tIf = args[0..tMin!($,sp)];
else
alias tIf = args[tMin!($,sp+1)..$];
}
int main(string[] argv)
{
alias x = tIf!(false, "a", tTupleSplit, "b");
writeln(x);
readln();
return 0;
}