いろいろ
16日のDBCと unittest の件は解決。
DBC の方は、in ブロック、body ブロック 含め、{}でかこってしまっていたため、外側の{}が body ブロックと解釈され、「body ブロックに in を書いちゃいかんよ」とコンパイラからしかられていた。(恥)
unittest の方はコンパイル時のオプション。
いや、マニュアルページには -unittest とすることで、単体テストの起動を抑えるみたいに書いてあったんだが……
その他、配列全体の print は、printf("%s", ar) でできてしまう。printf が、配列の各要素に対して、Object.toString() または std.string.toString() を呼び出してくれる。
しかし、"~" で文字列に連結してあげても、Object.toString() は呼び出されないのだなぁ。char[] opCast() が定義されていてもだめ。(キャスト演算子は明示的なキャストにしか影響しないらしい)
あと.object の日本語版マニュアルページには載っていなかったが、object.d を除いてみると、
void print()
{
printf("%.*s\n", toString());
}
が定義されてるじゃありませんか。
いっしょけんめ、writefln(obj.toString()) とやっていた。
今日の教訓:
toString() は暗黙的に呼ばせよう。