如何将值传递给lambda函数

时间:2019-01-18 12:27:09

标签: c++ lambda

我正在尝试使用lambda组合函数参数中的多个步骤。我尝试过:

void testLambda(const char* input, const char* output = [](const char* word){return word;}(input)){

     std::cout << input << " " << output << std::endl;

}

该功能应该:if

testLambda("hallo");
调用

,从第一个参数获取并创建第二个参数(默认),然后打印hallo hallo。 我该如何工作?

1 个答案:

答案 0 :(得分:2)

您不能这样做-默认参数不够复杂。即使它们是,这也不是非常清楚的代码。

只需编写一个重载!

void testLambda(const char* input, const char* output)
{
     std::cout << input << ' ' << output << '\n';
}

void testLambda(const char* input)
{
    return testLambda(input, input);
}

或者如果您不想这样做:

void testLambda(const char* input, const char* output = nullptr)
{
     std::cout << input << ' ' << (output ? output : input) << '\n';
}

(然后将函数重命名为:P)

无需使这种模式复杂化。