#include <iostream>
#include <typeinfo>
#include <boost/function_types/result_type.hpp>
#include <boost/function_types/parameter_types.hpp>
using namespace std;
using namespace boost::function_types;
int main()
{
typedef char (*Foo)(bool, int);
cout << typeid( result_type<Foo>::type ).name() << endl;
cout << typeid( parameter_types<Foo>::type ).name() << endl;
}
char struct boost::mpl::vector2<bool,int>
(Visual C++ 2005 の場合。typeid(...).name() の結果は処理系依存です。 他の処理系ではこんなに綺麗に出ないこともあります。)
関数の型から引数の型リストをとりだしたり、 またその逆に型リストから関数の型を合成したりするライブラリです。 MPL等を使ってアルゴリズミックに型設計してる時などに便利かも。