【发布时间】:2011-05-02 03:15:02
【问题描述】:
这是此问题的后续问题:Lambda how can I pass as a parameter
据说 MSDN 已将该项目标记为已修复。我查看了规范,但在将规范转换为应有的语法时遇到了麻烦。
例如:
void printOut(int(*eval)(int))
{
for(int x = 0; x < 4; ++x)
{
std::cout << eval(x) << std::endl;
}
}
现在说我有 lambda:
auto lambda1 = [](int x)->int{return x;};
将lambda1 转换为等效的功能指针以便将其传递给printOut 的语法是什么?
另外,括号中实际包含某些内容的 lambdas 呢?例如:
int y = 5;
auto lambda2 = [y](void)->int{return y;};
如果这种 lambda 不能转换为函数指针,是否有另一种方法可以将这种类型的 lambda 表达式传递给printOut(甚至是printOut的修改版本,如果是的话,语法是什么? )?
【问题讨论】:
-
“MSDN 应该已将该项目标记为已修复。” Connect 错误表示“此问题已得到修复,将在未来的版本中提供。”并不是说该修复程序适用于当前版本的编译器。
-
哦。我想我天真地认为 sp1 会包含这个修复:P
-
哦;抱歉,我没有看到 Connect 错误上的日期(我想这很有趣,因为我报告了它)。那时它可能没有达到将其纳入服务包的标准。
标签: c++ visual-studio-2010 lambda c++11