看板 C_and_CPP 關於我們 聯絡資訊
比方說: typedef int Function( int, char * [] ); typedef std::function< Function > Functor; 我希望可以透過 Functor 來拿到 Function 這個簽名以利我轉型 像是: void * symbol = dlsym( "blahblahblah" ); Functor f = reinterpret_cast< Functor::signature * >( symbol ); 不過我看了一下 function 的成員,好像沒有相關的 typedef 是否有其他的設施可以拿到簽名呢? -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.49.85
yoco315:#include <boost/function_types/parameter_types.hpp> 11/08 23:47
yoco315:結果我回的完全不相關 11/08 23:54
loveme00835:很可惜並沒有, 你可以自己寫一個 type_traits 來弄 11/08 23:57
yoco315:剛剛查了一下我也發現沒有 小訝異 只好自己弄 11/09 00:02
legnaleurc:好囧 ... 這種實作簡單又還算重要的功能竟然沒做 11/09 00:05
loveme00835:因為他內部為了達成萬用的目的(成員函式), 用了很噁心 11/09 00:05
loveme00835:的轉型轉來轉去, 實際上不是存指標 11/09 00:06
loveme00835:之前看到 CodeProject 某篇文章有介紹 11/09 00:07
legnaleurc:這不是只要把模板參數再定義出成員就好了嗎? 11/09 00:12
legnaleurc:像是 template<cls T> ... typedef T signature; 11/09 00:13
loveme00835:那這樣的程式碼:http://ppt.cc/i(GO T應該是什麼呢? 11/09 00:25
legnaleurc:所以問題是 return_type 不算在 signature 裡 11/09 02:38
legnaleurc:還是可推導相容的型別太多? 11/09 02:38
Chikei:http://codepad.org/PvR3iHob 11/09 14:48
loveme00835:回傳跟參數型別只要能互轉就好, 而且有同樣呼叫方式的 11/09 18:09
loveme00835:Functor 類別也有無限多, 你要寫死成成員是不可能的 11/09 18:10