C lambda/闭合混淆 - 如何返回值,而不是闭合
C++ Lambda/Closure Confusion - How to return a value, not a closure
我试图在C 中围绕FP,对以下代码有些困惑。
我想输出值2*a,但它似乎正在输出" true",我想cos artery表达式正在返回。
int main () {
int a {5};
std::cout << [](int a) { return 2*a; };
return 0;
}
很抱歉,如果我错过了一些愚蠢和明显的东西。
您需要使用呼叫操作员(()
)实际调用lambda。在这种情况下,由于lambda需要一个您使用
int main () {
int a {5};
std::cout << [](int a) { return 2*a; }(a);
return 0;
}
另外,您可以将两个位分为
int main () {
int a {5};
auto func = [](int a) { return 2*a; };
std::cout << func(a);
return 0;
}
在这种情况下,由于您有一个非捕获lambda,发生的事情是将lambda转换为函数指针,并且由于该指针不是零,因此打印了true。
相关文章:
- 从python中调用C++函数并获取返回值
- 为什么模板类中的对象不能返回值
- 返回值优化:显式移动还是隐式
- lock_guard是否保护返回值
- 调用CreateProcess()并获取字符串的返回值
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 查找 GCD:并非所有控制路径都返回值
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 如何在没有返回值的情况下使用(特征)unaryExpr 和 lambda 函数?
- lambda 函数返回值的有效性
- 如何捕获返回 lambda 的函数的返回值类型
- C lambda/闭合混淆 - 如何返回值,而不是闭合
- 具有可选返回值的 lambda 参数
- C++ 如何处理循环中使用的 lambda 表达式for_each返回值
- 使用lambda从boost::线程检索返回值
- 将boost::lambda::bind的返回值赋给object
- Lambda函数捕获变量vs返回值
- 如何将 boost.lambda 与 boost.thread 一起使用来获取线程的返回值?