先日のboost::bindのサンプルコードは、 boost::lambdaを使うことによりもうちょっと分かり易くなるようです。
以下のboost::bindを使ったコード(using namespaceを使って見やすくしました)は、
using namespace boost; ItemList::iterator s = std::find_if(Items.begin(), Items.end(), bind(std::equal_to<int>(), bind(&Item::GetValue, _1), 10));boost::lambdaにより、以下のようになります。
using namespace boost::lambda; ItemList::iterator s = std::find_if(Items.begin(), Items.end(), bind(&Item::GetValue, *_1) == 10);
若干短くなり、==など見慣れた演算子が登場して分かりやすくなりましたね。・・・っていうかなんでこれ動くの・・・。
boost::lambdaのより変態的なサンプルを見たい方は、以下のページがお薦めです。
Entangled Space boost user - lambda