Conversão da expressão lambda para funcionar como ponteiro
Esta é uma pergunta de acompanhamento para esta pergunta:Lambda como posso passar como parâmetro
@MSDN supostamente marcou o item como corrigido. Dei uma olhada nas especificações, mas estou tendo problemas para convertê-las em qual deveria ser a sintaxe.
Então, por exemplo:
void printOut(int(*eval)(int))
{
for(int x = 0; x < 4; ++x)
{
std::cout << eval(x) << std::endl;
}
}
Agora digo que tenho o lambda:
auto lambda1 = [](int x)->int{return x;};
Qual é a sintaxe para converterlambda1
no equivalente funcional do ponteiro para que possa ser passado paraprintOut
?
Além disso, o que dizer de lambdas que realmente têm algo entre parênteses? Por exemplo
int y = 5;
auto lambda2 = [y](void)->int{return y;};
Se esse tipo de lambda não puder ser convertido em um ponteiro de função, existe um método alternativo para passar esse tipo de expressão lambda paraprintOut
(ou mesmo uma versão modificada deprintOut
, se sim, qual é a sintaxe)?