関数でのauto

/**
 * Foo is a class!
 */
auto foo(T)(T bar)
{
    return new Foo!(T)(bar);
}

返り値をautoで推論させていると,型が特定できないからかDDocの出力に反映されないようだ.標準ライブラリでautoじゃなくてtypeof(return)が使われてるのは何か理由があるのかと思ったけど,こういうのも一因なのかな?
ただtemplateで物凄く型を操作している関数を見ると,autoにしたくなる時もあるw