Return C++ 中的闭包类型

Return type of closure in C++

我正在尝试学习 C++ 中的闭包。这个例子有效:

auto add_n(int n) {
    return [=](int x) -> int {
        return x + n;
    };
};
auto add_3 = add_n(3);
add_3(5); //8

add_n 期待什么类型?我希望能够使用一个函数指针,它接受一个 int 和 returns 一个 int 作为 return 类型?

typedef int (*fptr)(int);
fptr add_n(int n) {
    return [=](int x) -> int {
        return x + n;
    }; 
};

此外,如果我改用模板工作,还需要做任何其他事情吗?谢谢!

每个 lambda 都有自己的未命名类型,因此您不能用其真实类型替换 auto

带有捕获的 Lambda 无法转换为函数指针。