メンバ関数ポインタを数値として扱ってみる(非推奨
メンバ関数ポインタはいろんな事情でvoid*に変換できないので、
boost::any fun = &Class::function; ... (hoge.*boost::any_cast<省略>(fun))(ry);
みたいな事をしたいけどあんまり負荷が大きいことをしたくない。
メンバ関数ポインタが8バイトの時は
unsigned long long memfun2value(メンバ関数ポインタ fun) { struct Hoge { メンバ関数ポインタ f; }; Hoge h; h.f = fun; return *(unsigned long long*)(&h); } メンバ関数ポインタ value2memfun(unsigned long long val) { struct Hoge { メンバ関数ポインタ f; }; Hoge h = *(Hoge*)(&val); return h.f; }
こんな感じでできた。最終手段としてはありかもしれんけどあんまやりたくないなぁ。