static foreach and inline if

JS js.mdnq at gmail.com
Sun Jul 28 02:01:20 PDT 2013


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;
}


More information about the Digitalmars-d-learn mailing list