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)); //引用
假如异步编程遇到需要引用参数 获取结果值 就需要使用这种方式
网友评论