我有一個類:轉換類型爲int(C :: *)(INT,CHAR)爲int類型(INT,CHAR)
struct C {
int F(int, char) { return 0; }
};
,我需要創建一個std::function
,它會調用C::F
一個變量c
功能:
C c;
std::function<int(int, char)> f;
...
f = std::bind(&C::F, &c, _1, _2);
但如果函數的簽名被改變,我需要改變的std ::功能以及。
,所以我想不重複簽名:
C c;
std::function<delete_class<decltype(&C::F)>::type> f;
...
f = std::bind(&C::F, &c, _1, _2);
其中delete_class是一些神奇的幫手,它改變輸入int(C::*)(int, char)
到int(int, char)
。
我懷疑,我可以在boost::mpl
或boost::function_types
的幫助下實現它,但我做不到。
有人,誰有經驗,告訴我該怎麼做?
PS。 VS 2010
你能不能只需使用'auto f = std :: bind(&C :: F,&c,_1,_2);'? – soon 2013-04-25 16:44:34
在真正的應用f是一個結構的成員,所以我不能使用「自動」那裏 – Alek86 2013-04-25 16:51:13