09/02/25 13:16:26
159です。
>>176
tool*でならmain.cppの最終行を
la::bind(&human::use, la::var(man), t.get())();
としてやれば良いのですが
tool&をhuman::useの引数にすると
la::bind(&human::use, la::var(man), la::var(*t))();
は、やはりエラーとなりますね。
la::bind(&human::use, la::var(man), boost::ref(*t))();
としてもエラーです。
腑に落ちないのが
boost::bind(&human::use, boost::ref(man), boost::ref(*t))();
ならコンパイルが通ること。
lambdaの内部を追っているわけではないのでなんともいえませんが、
ユーザからすると、この動作は奇妙に思えます。
boost::bindとboost::lambda::bindは互換性があると勝手に思っていたの
で意外です。
boost::cref => boost::lambda::constant_ref
boost::ref => boost::lambda::var
という理解も間違っているのでしょうか?