このdecltypeはなんとかならないものか・・・
template <class F> auto foo(F f) -> decltype(boost::bind(f, 3, _1, 5)) { return boost::bind(f, 3, _1, 5); }
同じコードを2回も書きたくないけど、戻り値の型を計算するよりはずっと簡単。
bindの戻り値の型は、BoostでもC++0xでもunspecifiedなので、やはりこの方法になってしまうのかもしれない。
boost::functionを、bindが渡されたときはType Erasureのコストがかからないよう修正しようか、という案も出てるけど、functionを使ってもめんどくさい気がするなぁ。