Great. but I found two bugs. I can't split string on compile time :-( import std.stdio; template eval(T...){ const eval=T[0]; } char[][] bug1(){ char[][] rv; rv~="test"; return rv; } bool bug2(char[] a, char[] b){ return (a==b); } void main(){ // writefln(eval!(bug1())); // writefln(eval!(bug2("test","test"))); }