c-为什么绑定不能与按引用传递一起使用?
作者:互联网
这个问题已经在这里有了答案: > std::bind lose reference when delivered as rvalue reference 2个
我发现使用std :: bind时按引用传递往往不起作用.这是一个例子.
int test;
void inc(int &i)
{
i++;
}
int main() {
test = 0;
auto i = bind(inc, test);
i();
cout<<test<<endl; // Outputs 0, should be 1
inc(test);
cout<<test<<endl; // Outputs 1
return 0;
}
通过标准绑定创建的函数调用时,为什么变量不递增?
解决方法:
std :: bind复制提供的参数,然后将副本传递给您的函数.为了传递引用进行绑定,您需要使用std :: ref:auto i = bind(inc,std :: ref(test));
标签:stdbind,c 来源: https://codeday.me/bug/20191011/1889953.html