v0.166
D言語の新バージョンです。
とりあえずメンバ関数テンプレート最高とだけ。
これで変態チックなコードの幅が広がりました。
あと、lazyという遅延評価専用の予約語が登場。
この結果 exp -> exp delegate()は消えました。
ただ、遅延評価をさらに構造体に入れて持ち運びをするのがしにくいので
lazy T を T delegate()にする関数の作成してみた。
T delegate() lazy2dg(T)(lazy T v){ asm{ naked; mov EAX,[ESP+4]; mov EDX,[ESP+8]; ret 8; } }
やってることは受け取った引数を返してるだけ。
どうせ内部表現はdelegateと同じ
いうまでもなく機種依存。Windows版でのみテスト