メタプログラミング大好き
さてと最近はコードの短縮化を話題にしていましたが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(){}
このように、実用性は非常に疑問ですが、
コンパイル時にカオスなプログラミングも可能になりました。