関数型を返すメタ関数

<boost/lambda/detail/lambda_traits.hpp>
にこんなコードがあった。

template<class R>
struct bind_traits<R()> {
    typedef R(&type)();
};

template<class R, class Arg1>
struct bind_traits<R(Arg1)> {
    typedef R(&type)(Arg1);
};

...

こんなことができたなんて・・・
これができるから型のシーケンスからboost::functionのテンプレート引数を作れるのか・・・