c++ - 获取通用/前向引用的地址有什么意义?
问题描述
我遇到以下代码片段:
......
template <typename SrcIt, typename DstIt, typename Func>
auto par_transform_naive(SrcIt first, SrcIt last, DstIt dst, Func&& func) {
......
auto future = std::async([first, dst, start_idx, stop_idx, &func] {
std::transform(first + start_idx, first + stop_idx, dst + start_idx, func);
});
......
}
......
让我困惑的是为什么代码需要获取地址func
:
......
auto future = std::async([first, dst, start_idx, stop_idx, &func]
......
根据我的理解,无论func
推断为lvaule refernce
还是rvalue reference
,都不需要再次获取地址。
解决方案
位于lambda-capture&func
中。这意味着 lambda 将通过引用捕获。func
没有它,它会按值捕获,这意味着制作被引用对象的副本。
推荐阅读
- python - cmp(list1,list2) 函数在 Python 中不存在
- string - Pyspark 更改字符串顺序
- python - 切片字符串跳过特定字符
- javascript - 当限制设置为 10 时,GIPHY API 调用仅在 {Object} 中返回一个 gif
- c - OpenMP 并行乘法比顺序乘法慢
- java - 从双打列表创建坐标
- c# - 用于访问其他页面的文本框/对象的投射页面
- mysql - 想要统计出现次数,则只打印高于所有计数值平均值的计数值
- node.js - TypeError:无法读取未定义的 Graphql、Nodejs 的属性“forEach”
- angular - 如何以反应形式绑定表单输入值