首页 > 解决方案 > 获取通用/前向引用的地址有什么意义?

问题描述

我遇到以下代码片段

......
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,都不需要再次获取地址。

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

解决方案


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

没有它,它会按值捕获,这意味着制作被引用对象的副本。


推荐阅读