読者です 読者をやめる 読者になる 読者になる

堕(惰)プログラマ開発記録

タイトル変えようかなとも思ってるけれど,思い浮かばない

boost::functionとboost::bindとラムダ式

C++ Boost

さっきのSHA1ハッシュを計算するクラスの中でこんなの使ってみたんだよね。
boost::functionとboost::bindとラムダ式…奥が深くて面白かった。

unsigned char W[80];
const int i[3] = { 0,5,10};

void foo(const int t,const boost::function<unsigned long(unsigned long,unsigned long,unsigned long)> calculate,const unsigned long Key)
{
  W[t]=calculate(i[0],i[1],i[2])+Key;
}

int main()
{
  const boost::function<void(int)> f = 
    boost::bind(&foo,_1,[](unsigned long B,unsigned long C,unsigned long D){return (B + C + D);},0xff);

  for(int i=0;i<80;++i)
  {
    f(i);
  }

  return 0;
}