可変長引数で渡せばテンプレートに何でも渡せるが、色々と不都合が多すぎるのがなんとも。
static if(arr)
とするとarrが[1]の時などにエラーが起きる。
static if(!!arr)
や
static if(arr.length)
とするとarrがnullの時にエラーが起きる。しかも、以下に引っかからない。
static if(arr!=null)
static if(is(typeof(arr.length)))
どないせいと。脳みそこねても分からん俺。
null.lengthは0返しゃいいし、!!nullはfalse返せよと。
bool isNull(T)(T t){ if(t.length) return false; return true; } static if(isNull(arr))
としてもおかしい。この状態でarrをintからcharに変更したら直った。何だそりゃ。
他にもarr[0..len][1..$-1]とか駄目だし、[] ~ 1が駄目だし、TL.length>0?TL[0]:0が駄目だし、enumが駄目だし。
重複チェック面倒なので、落ち着いてからバグ報告する予定。なのでここにメモっとく。
あーforeach(;tuple)な関数のCTFEも駄目だっけ。
#この周りはバグだらけなのでBOFでは喋る予定なす。