boost::bind如何绑定指针的成员?
#include<vector>#include<iostream>#include<boost/bind.hpp>using namespace std;struct base{ int k; void f(){++k;} base():k(2){}}; struct s{// has a base() int i; base m_base; s():i(3){}};int main(void){ using boost::bind; const int l=1000; s* ps=new s[l]; vector<s*> vps; for(int i=0;i<l;++i){ ps[i].i=1; vps.push_back(&ps[i]); } DWORD ret1=GetTickCount(); std::for_each(vps.begin(),vps.end(),bind(&base::f,bind<s&>(&s::m_base,_1)));//这行编译不过去 DWORD ret2=GetTickCount(); printf("boost::bind = %d\n",ret2-ret1);}
std::for_each(vps.begin(),vps.end(),bind(&base::f,bind(&s::m_base,_1)));