さてと、D言語でメタプログラムの練習がてらに、こんなん書いてみました


template toString(ulong N){
static if(N>=10)const char[]toString =
.toString!(N/10) ~ .toString!(N%10);
//else const char[]toString=['0'+N];
//なぜかエラーtemplate toString(ulong N){
else const char[]toString =
(N!=0)?(N!=1)?(N!=2)?(N!=3)?(N!=4)?
(N!=5)?(N!=6)?(N!=7)?(N!=8)?
"9":"8":"7":"6":"5":
"4":"3":"2":"1":"0";
}
使いどころは非常に限られている気もしますが気にしない方向で。
static switch文とかあればもう少し綺麗に書けるのになぁ