c++ - 返回 lambda 表达式的函数

标签 c++ function c++11 lambda

我想知道是否可以在 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/

相关文章:

c++ - `obj.operator+=(rhs)` 与 `obj += rhs`

java - 数组上的正则表达式匹配 (Java)

c - 传递函数 char 参数返回错误

multithreading - 在这种特殊情况下,C++ 11的内存顺序保证是什么?

c++11 - 我应该将用户定义类型的专用 std::hash 放在哪里

python - Tensorflow - ops 构造函数是什么意思?

c++ - 如何清除 vector 但保持其容量?

C++ 从函数数组中调用函数

c++ - 一个继承类可以有多少个构造函数?

c++ - 无法启动 pty 进程 :