相关疑难解决方法(0)

传递lambda作为参数 - 通过引用或值?

我编写了一个模板代码,它以仿函数作为参数,经过一些处理后,执行它.虽然其他人可能会传递该函数一个lambda,一个函数指针甚至一个std::function但它主要是为lambda(不是我禁止其他格式).我想问一下,我应该怎样拿这个lambda - 按价值?引用?或者是其他东西.

示例代码 -

#include <iostream>
#include <functional>
using namespace std;

template<typename Functor>
void f(Functor functor)
{
    functor();
}

void g()
{
    cout << "Calling from Function\n";
}

int main() 
{
    int n = 5;

    f([](){cout << "Calling from Temp Lambda\n";});

    f([&](){cout << "Calling from Capturing Temp Lambda\n"; ++n;});

    auto l = [](){cout << "Calling from stored Lambda\n";};
    f(l);

    std::function<void()> funcSTD = []() { cout << "Calling from std::Function\n"; };
    f(funcSTD);

    f(g);
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我可以选择将它们中的任何一个 -

template<typename Functor> …
Run Code Online (Sandbox Code Playgroud)

c++ lambda function c++11 c++14

17
推荐指数
2
解决办法
6042
查看次数

标签 统计

c++ ×1

c++11 ×1

c++14 ×1

function ×1

lambda ×1