if_


以下のことをやりたいのですが,できません.


というか寝ますので今日やったことをまとめてみただけです.


ちなみに今日は12時間程MHFをやっていましたwww


多分明日はやらないかなぁ.




#include <algorithm>
#include <map>
#include <boost/lambda/bind.hpp>
#include <boost/lambda/if.hpp>

namespace bll = boost::lambda;

int main(){

// void object::draw() const;
// bool object::flag() const;

  typedef std::map<int, object> my_map;
  typedef my_map::value_type my_pair;

  std::map<int, object> obj;

  std::for_each(obj.begin(), obj.end(),
    bll::if_( bll::bind(&object::flag, bll::_1)() )[ // ここ
      bll::bind(
        &object::draw,
        bll::bind(
          &my_pair::second,
          _1
        )
      )
    ]
  );

  return 0;

}

// こう
// bll::if_( bll::make_const(true) )[


// やりたいこと
  std::map<int, object>::const_iterator it = obj.begin();
  for(; it != obj.end(); ++it){
    if(it->second.flag())
      it->second.draw();
  }


「ここ」を「こう」にすると動きました.


何か別のやつがあるのかね.

それとも無理なのかなぁ.


でもこの場合だと逆に「やりたいこと」の方が見やすいね.



さてGP本でも読みながら寝ます.

今2章が終わって,とばして5, 6章を見てます.