看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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