std::ref

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)); //引用

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容