    #include <iostream>

    typedef int (*FuncPtr_t)(void*, int);
    static int simpleFunction(FuncPtr_t pfunc, void *context, int nos)
    {
        pfunc(context, nos);
    }

    struct A {
        int i;
        int pf(int nos) { std::cout << i << " nos = " << nos << "\n"; return i; }
    };

    int main() {
        A a { 1234 };
        // could combine the next two lines into one, I didn't.
        auto trampoline = [](void *inst, int nos) { return ((A*)inst)->pf(nos); };
        simpleFunction(trampoline, &a, 42);
    }
