Compreendendo o QTimer com Lambda e chamada de função recursiva

Eu tenho o seguinte código:

void class::Testfunc()
{
    QTimer* timer = new QTimer;
    QObject::connect(timer, &QTimer::timeout, [this](){
        emit Log("Time out...");
        TestFunc(serverAddress, requestsFolderPath);
       // deleteLater(); //*** why does this crash if used to replace the connect below?
    });
    connect(timer, &QTimer::timeout, timer, &QTimer::deleteLater);
    timer->setSingleShot(true);
    timer->start(1000);
}

Um timer de disparo único é criado com um tempo limite conectado a uma função lambda que registra a entrada da função lambda a cada segundo (imprime texto em stdout) e chama a função novamente.

Isso funciona sem problemas. No entanto, se eu remover a chamada de conexão para deleteLater (abaixo da função lambda), mas ativar a chamada deleteLater na função lambda, a função falhará. Ele é impresso uma vez e logo depois, falha ao tentar excluir o objeto de timer.

Qual é a diferença entre as duas chamadas deleteLater nesta instância e por que colocar a deleteLater na função lambda causaria um problema aqui, enquanto a criação de uma conexão separada funciona conforme o esperado, mesmo que ambos estejam chamando deleteLater em resposta ao sinal de tempo limite do Timer?

questionAnswers(2)

yourAnswerToTheQuestion