anyを理解できたので、functionも読もうとしてみた。そして挫折した。これは難しい。Preprocessor Metaprogrammingという、ふざけた概念には、付き合えそうにない。プリプロセスされた結果を読み解こうとするが、boost/function.hppだけで出力された結果は1.46MBにもなり、とても読みきれない。仕方がない、プリプロセッサメタプログラミングを学ばねばならない。
基本的なことだけを理解して、とりあえず読みにかかったが、実際、膨大すぎる。
とりあえず分かったこと。
boost::functionはBOOST_FUNCTION_FUNCTIONを継承、BOOST_FUNCTION_FUNCTIONはfunction_baseを継承している。BOOST_FUNCTION_FUNCTIONは、BOOST_JOINによって、function10などという風になる。BOOST_JOINは、boost/config/suffix.hppで定義されている。
BOOST_FUNCTION_FUNCTIONは、function_baseを継承している。
で、実際どこでnewをしているのか、どこにoperator()();があるのかすら分からない。
3 comments:
http://tinyurl.com/ntf7x
攻略しました。が、最新のはbindか何かへの最適化も入って
さらにややこしくなってるはず
うおおおおお、これは分かりやすい。
さて、次はbindか……。
boost::bindは個人的には読まなくていいと思う。古いので。
Spiritも古いので読まなくていいかもしれない。Spirit2がもうすぐ来ます。
Post a Comment