我想知道是否可以在 C++11 中编写一个返回 lambda 函数的函数。当然,一个问题是如何声明这样的函数。每个 lambda 都有一个类型,但该类型在 C++ 中是不可表达的。我认为这行不通:
auto retFun() -> decltype ([](int x) -> int)
{
return [](int x) { return x; }
}
也不是这样:
int(int) retFun();
我不知道有任何从 lambda 到函数指针等的自动转换。唯一的解决方案是手工制作函数对象并返回它吗?
最佳答案
您不需要手工制作的函数对象,只需使用 std::function
,lambda 函数可以转换为:
此示例返回整数恒等函数:
std::function<int (int)> retFun() {
return [](int x) { return x; };
}
关于c++ - 返回 lambda 表达式的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4726768/