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 无法转换为函数指针。
我正在尝试学习 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 无法转换为函数指针。