作者kevingwn (如雲如風的人生)
看板C_and_CPP
標題Re: boost::function_types::parameter_types 怎麼 …
時間Sun Jul 18 22:56:05 2010
※ 引述《yoco315 (眠月)》之銘言:
: boost::function_types::parameter_types<int(int,double)>::type
: 可以取到 mpl::vector2<int, double>
: 實在很好奇他是怎麼做到的
: 我看了一下 source code 但是看不出個毛 /_\
: 有沒有前輩可以稍微提示一下....
: 一般的 traits 我都還可以想像他是怎麼做的,
: 但是把函數的參數串列取出來到底是怎麼弄的 T_T
我猜是這樣
template<typename F>
struct parameter_of;
template<>
struct parameter_of<int()>
{
typedef void type;
};
template<typename FArgs>
struct parameter_of<int(FArgs)>
{
typedef FArgs type;
};
int main()
{
std::vector<parameter_of<int(double)>::type> vec;
return 0;
}
然後列舉所有不同回傳型別的function...(逃~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.92.148
→ kevingwn:再看了一遍yoco大的問題,應該改成: 07/19 00:33
→ kevingwn:template<typename A1, typename A2> 07/19 00:33
→ kevingwn:struct parameter_of<int(A1, A2)> 07/19 00:34
→ kevingwn:{ 07/19 00:34
→ kevingwn: typedef mpl::vector2<A1, A2> type; 07/19 00:35
→ kevingwn:}; 07/19 00:35
→ kevingwn:這樣parameter_of<int(int, double)>::type就會拿到mpl:: 07/19 00:37
→ kevingwn:vector2<int, double>了 07/19 00:37
推 hilorrk:精美的推文排版XD 07/19 00:39
推 VictorTom:美的推文排版XD 07/19 01:35
→ yoco315:感謝.. XD 啾甘心ㄟ... XD 07/19 09:32
推 avhacker:其實本質上跟 boost::TypeTraits 一樣啊, 很多有趣的東西 07/19 12:57