dmd 2.029!
http://www.digitalmars.com/d/2.0/changelog.html#new2_029
ここでも喜びを表現.前回公開されたAndrei's Phobosが導入されてstd.regexとかstd.rangeとかが使えるようになった.それに加えてtemplate function literalも使えるように(でも例がないのでよく分からないw).parse.cに"it's a template 'literal'"というコメントが書かれてる部分とかあるのだけど,フロントエンドを読んでない俺には辿れないという罠.MLに目を光らせておく.
追記
Walterのサンプルを見ると
void foo(alias f)() { f(3, 4); // writefln(f(3, 4)); コンパイルエラー // writefln(typeid(typeof(a))); コンパイルエラー } foo!((x, y) { return x * y;})();
と書けるものらしい.これはうむむ.Danielが書いてた
alias (T)(T a, T b) { return (a + b) / 2.0; } average;
の方がそれっぽい気がするw
追追記
stringとかだと動くw
void bar(alias f)() { writefln(f("bar")); //-> bar } bar!((str) { return str; })();
結構バギーな気がする単なる俺の知識不足でした.
追追追記
http://lists.puremagic.com/pipermail/digitalmars-d-announce/2009-April/012769.html
これだと動くのか.違いがよく分からないよ!よく見たらwriteflnじゃなくてwritelnでした.