Função Anônima C ++

Eu estou tentando usar a funçãosignal(int,void(*)(int))&nbsp;de<csignal>&nbsp;para manipular a exceção de ponto flutuante SIGFPE. Eu gostaria de poder imprimir alguns diagnósticos úteis além de uma mensagem dizendo "Exceção de ponto flutuante" ou algo assim. Isso significa que a função que eu passo como o manipulador parasignal&nbsp;precisa de acesso a alguns dos dados no meu código. Aí reside o atrito.

A função deve retornarvoid&nbsp;e aceita apenas 1 parâmetro do tipoint. Eu não posso fazer o manipulador uma função de membro da minha classe de armazenamento de dados desde então o tipo seriavoid(Foo::*)(int)&nbsp;devido ao ocultothis&nbsp;ponteiro.

Pensei em usar o lambdas para tentar fazer uma função anônima como essa;

void handler(int nSig, Foo data)
{
    // do something
}
// snip
Foo data;
signal(SIGFPE, [&](int nSig)->void{handler(nSig,data);});

no entanto porque o lambda captura a variáveldata&nbsp;de fora do compilador não vai deixá-lo ser convertido em um ponteiro paravoid(*)(int)&nbsp;(O que é uma vergonha, pois isso parece ser um uso ideal para lambdas).

Eu poderia simplesmente fazerdata&nbsp;uma variável global que poderia então ser visto emhandler&nbsp;mas estou relutante em fazer isso por razões óbvias.

Então minha pergunta é assim;qual é a melhor maneira de imitar funções anônimas em C ++?

Nota: Eu preferiria uma solução C ++ nativa e não teria que usar boost ou equivalente.