Ecco la soluzione quando non si dispone di Internet per leggere la brutta funzione di puntatore-a -Membro sintassi:
auto err1 = [](test& t) { return t.error(); };
auto err2 = [](test& t, int x) { return t.error(x); };
Nota che fino ad ora si ottiene chiusure come i tipi e non puntatori a funzione. Se si desidera che i puntatori di funzione siano utili se si desidera archiviare funzioni membro diverse con la stessa firma in una matrice, è possibile eseguire la chiusura su un puntatore di funzione (normale) tramite +
(vedere here).
Per quanto posso vedere al momento, con quanto sopra puoi fare concettualmente qualsiasi cosa tu possa fare con i puntatori funzione-membro, eccetto ovviamente chiamare una routine che richiede esattamente un tale puntatore. Ed è molto più bello.
Caro signore, è brutto. – cat
Ogni volta che vedo la sintassi del tipo C++ provo l'impulso di scrivere qualcosa - qualsiasi cosa - in Haskell. – ApproachingDarknessFish