メタプログラミング大好き

さてと最近はコードの短縮化を話題にしていましたがD言語の話題へ戻りましょう。
いまさらですが、dmd v 0.140が出ました。

特に楽しそうなのはtemplateの引数に文字列と浮動少数が使えるようになった点。
今までだとtypedefを使う微妙なコードを書かなくては駄目だったのでかなり嬉しいです。


とりあえず例として

template t_strlen(char r){ const uint t_strlen = r.length; }
template t_concat(chara,charb){const chart_concat = a ~ b;}
template t_toString(uint u){
	static if(u<10){const chart_toString =
		"0123456789"[u..u+1];}
	else const chart_toString =
		.t_toString!(u/10)~.t_toString!(u%10);
}
template t_print(uint a){pragma(msg,t_toString!(a));}
mixin t_print!(t_strlen!(t_concat!("Hello","World")));

int main(){}


このように、実用性は非常に疑問ですが、
コンパイル時にカオスなプログラミングも可能になりました。