Anonimowa funkcja C ++

Próbuję użyć tej funkcjisignal(int,void(*)(int))&nbsp;z<csignal>&nbsp;do obsługi wyjątku zmiennoprzecinkowego SIGFPE. Chciałbym być w stanie wydrukować kilka użytecznych diagnostyki oprócz wiadomości z informacją „Wyjątek zmiennoprzecinkowy” lub coś takiego. Oznacza to funkcję, którą przekazuję jako program obsługisignal&nbsp;potrzebuje dostępu do niektórych danych w moim kodzie. W tym leży pocieranie.

Funkcja musi wrócićvoid&nbsp;i zaakceptuj tylko 1 parametr typuint. Nie mogę uczynić programu obsługi funkcją członkowską mojej klasy przechowywania danych od tego czasuvoid(Foo::*)(int)&nbsp;ze względu na ukrytethis&nbsp;wskaźnik.

Myślałem o użyciu lambd do wypróbowania takiej anonimowej funkcji;

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

jednak ponieważ lambda przechwytuje zmiennądata&nbsp;z zewnątrz kompilator nie pozwoli na rzutowanie na wskaźnik dovoid(*)(int)&nbsp;(co jest wstydem, ponieważ wydaje się to idealnym rozwiązaniem dla lambd).

Mógłbym po prostu zrobićdata&nbsp;zmienna globalna, którą można następnie zobaczyć whandler&nbsp;ale nie chcę tego robić z oczywistych powodów.

Tak więc moje pytanie jest takie;jaki jest najlepszy sposób naśladowania anonimowych funkcji w C ++?

Uwaga: Wolałbym natywne rozwiązanie C ++ i nie musiałem używać boosta lub jego odpowiednika.