c++ - 如何返回一个 lambda 函数?

标签 c++ c++11 lambda

例如,我可以将 lambda 函数定义为

auto f = [](double value) {double ratio = 100; return value * ratio;}

现在我想生成一个带有比率参数的函数并返回 lambda 函数,如

auto makeLambda(double ratio) { return [=](double value) {return value * ratio;}; }

怎么做?

最佳答案

使用 C++14 函数返回类型推导,应该可以工作。

在 C++11 中,您可以定义另一个 lambda(它可以推断返回类型),而不是一个函数(它不能):

auto makeLambda = [](double ratio) {
    return [=](double value) {return value * ratio;};
};

如评论中所述,如果您特别想要一个功能,可以进一步包装:

auto makeLambdaFn(double ratio) -> decltype(makeLambda(ratio)) {
    return makeLambda(ratio);
}

关于c++ - 如何返回一个 lambda 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24431751/

相关文章:

c++ - 是否有异常(exception)规则,如果地址可以使用&它是左值找到?

c++ - std::function 与 lambda 的比较

java - 如何减少 Java parallelStream 中的线程数?

c++ - 在 C++ 中调用 C 函数

c++ - 模仿C++中的静态构造函数

c++ - 计算机如何计算 float 0.1?

c++ - 如何在Qt中的特定坐标上显示图像?

c++ - 为什么隐式生成的构造函数(等)比用户定义的(普通的)构造函数更有效?

c++ - 如何从 'char const*' 中删除常量

c# - c# 表达式中的闭包变量捕获问题