获得通用/转发参考的目的是什么?

时间:2018-09-18 02:48:16

标签: c++ c++11 rvalue-reference rvalue

我遇到了以下代码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,都不需要再次获得地址。

1 个答案:

答案 0 :(得分:2)

&func lambda捕获中。这意味着lambda将通过引用捕获func

没有它,它将按值捕获,这意味着要复制所引用的对象。