2007-02-24
Boost.Function is the magic to me
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:
You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
http://tinyurl.com/ntf7x
ReplyDelete攻略しました。が、最新のはbindか何かへの最適化も入って
さらにややこしくなってるはず
うおおおおお、これは分かりやすい。
ReplyDeleteさて、次はbindか……。
boost::bindは個人的には読まなくていいと思う。古いので。
ReplyDeleteSpiritも古いので読まなくていいかもしれない。Spirit2がもうすぐ来ます。