其他分享
首页 > 其他分享> > c-为什么绑定不能与按引用传递一起使用?

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