读书人

boost:bind不能访问栈变量,对么?该如何

发布时间: 2012-04-26 14:01:31 作者: rapoo

boost::bind不能访问栈变量,对么?
C++11的lambda可以访问栈变量形成闭包。但是boost::bind似乎是不能访问栈变量的,如下:

C/C++ code
class s{   void f(int i)...};int main(void){   int k;   for_each(v.begin(),v.end(),boost::bind(&s::f,_1));...

问题是f函数的调用要用到参数int k
boost::bind能做到么?

我的工程是vc2005的,不能使用c++11的语法,用boost::bind能做到么?(不用boost::lambda的情况下)


[解决办法]
C/C++ code
for_each( v.begin(), v.end(), std::bind( &s::f , _1 , k ) );
[解决办法]
探讨

引用:

C/C++ code
for_each( v.begin(), v.end(), std::bind( &s::f , _1 , k ) );


如果f有多个输入变量,那么bind的写法就是
for_each( v.begin(), v.end(), std::bind( &s::f , _1 , k, l, m, n...)
……

读书人网 >C++

热点推荐