Allow saner escape hatches for state-ful templates, instead of compiler bugs fun unintended features with generally horrible proforence, syntax and limitations
__COUNTER__
a special token that increases by 1 each time its called
unittest{
__COUNTER__.writeln;//0
__COUNTER__.writeln;//1
}
unittest{
__COUNTER__.writeln;//2
}
this is already possible with mixin and mix files
__traits(oldarguments)
returns the previous template arguments
template foo(T...){
alias bar=__traits(oldarguments);
}
alias a=foo!int;//bar=()
alias b=foo!bool;//bar=(int)
alias c=foo!(float,double);//bar=(int,bool)
alias d=foo!();//bar=(int,bool,float,double)
this is already possible with my favorite compiler bug, but with n^2 complexity