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)?

questionAnswers(1)

yourAnswerToTheQuestion