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:

  1. http://tinyurl.com/ntf7x
    攻略しました。が、最新のはbindか何かへの最適化も入って
    さらにややこしくなってるはず

    ReplyDelete
  2. うおおおおお、これは分かりやすい。
    さて、次はbindか……。

    ReplyDelete
  3. boost::bindは個人的には読まなくていいと思う。古いので。
    Spiritも古いので読まなくていいかもしれない。Spirit2がもうすぐ来ます。

    ReplyDelete

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.