获取 universal/forward 引用的地址有什么意义?
What's the point of get an address of universal/forward reference?
我遇到以下代码 snippet:
......
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
,都不需要重新获取地址。
&func
在 lambda 捕获 中。这意味着 lambda 将通过引用捕获 func
。
没有它,它会按值捕获,这意味着复制被引用的对象。
我遇到以下代码 snippet:
......
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
,都不需要重新获取地址。
&func
在 lambda 捕获 中。这意味着 lambda 将通过引用捕获 func
。
没有它,它会按值捕获,这意味着复制被引用的对象。