boost::function

boostはtemplateとマクロいっぱいで、どうやって実装されているのだろうって考えてしまうクラスが非常におおいのだが、

その中でも特にfunctionは摩訶不思議な雰囲気があって一度実態を探るべく解析してみた。


#define BOOST_FUNCTION_NUM_ARGS 1
# ifndef BOOST_FUNCTION_1
# define BOOST_FUNCTION_1
# include
# endif
#undef BOOST_FUNCTION_NUM_ARGS

といってもやったのは上のプリコンパイルを出力しただけ。

ちなみにVCの場合は/EPつければOK.

長いので説明はしないけど、肝心なのはassign_toでinvoker_typeとinvokeあたりかな。

出力結果はこれ。

http://mulberryl001.ddo.jp/~paserry/wiki.cgi?page=Boost+Function