戻り値の型をどうにかしたい

boost::bind result type


この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を使ってもめんどくさい気がするなぁ。