std.algorithm.mapが使えねー

久しぶりにD言語の愚痴を。
とりあえずstd.algorithm.mapがイマイチ。
なにが使えないかってmapの返す型です。

Ranges[0] map(string fun,Ranges...)(Ranges rs);

具体的にはこれ書こうとしてエラー出るのが嫌

map!(toInt)(words);//文字列の配列を数値の配列に変換

これは引数がstringだから、
戻り値もstring
にしないと駄目なので通らない(dmd v2.011)


ようするに(A->A)->[A]->[A]じゃなくて(A->B)->[A]->[B]が欲しい


というわけでphobosを適当書き換え。
やったことは非常に簡単。
map関数の戻り値の型を以下のように書き換えればOK。

- Ranges[0] map(string fun, Ranges...)(Ranges rs)
+ typeof(unaryFun!(fun)(Ranges[0][0]))[] map(string fun, Ranges...)(Ranges rs)
- Ranges[0] map(alias fun, Ranges...)(Ranges rs)
+ typeof(fun(Ranges[0][0]))[] map(alias fun, Ranges...)(Ranges rs)