这是这个问题的后续问题:Lambda如何作为参数传递
据推测,MSDN已将该项标记为已修复.我看了一下规格,但是我将它们的规格转换成语法应该是什么.
例如:
void printOut(int(*eval)(int))
{
for(int x = 0; x < 4; ++x)
{
std::cout << eval(x) << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
现在说我有lambda:
auto lambda1 = [](int x)->int{return x;};
Run Code Online (Sandbox Code Playgroud)
转换lambda1为等效的函数指针的语法是什么,以便可以传递给它printOut?
那么,实际上在括号中有什么东西的lambda呢?例如:
int y = 5;
auto lambda2 = [y](void)->int{return y;};
Run Code Online (Sandbox Code Playgroud)
如果这种lambda无法转换为函数指针,是否有另一种方法可以将这种类型的lambda表达式传递给printOut(或者甚至是修改后的版本printOut,如果是这样的话语法是什么)?