C/C++

std::ref

2019-03-14  本文已影响0人  cx7

C++11引入了std::ref 为了解决函数式编程的参数是值拷贝的情况

这几个例子的情况各不相同
int a = 5;

auto fun = [](int &a){ //引用
    a++;
};

std::thread(fun,  a); //值拷贝 

std::bind(fun, a); // 值拷贝

以上的例子中 除了直接调用lambda 其余涉及到函数式编程的例子 参数都是值拷贝
std::ref正是应用在这个情况 将上述的式子改为

int a = 5;

auto fun = [](int &a){ //引用
    a++;
};

std::thread(fun,  std::ref(a)); //引用

std::bind(fun, std::ref(a)); //引用

假如异步编程遇到需要引用参数 获取结果值 就需要使用这种方式

上一篇 下一篇

猜你喜欢

热点阅读