¿Cómo vincular la función a un objeto por referencia?

Tengo el siguiente código para vincular una función miembro a una instancia de la clase:

class Foo {
public:
    int i;
    void test() {
        std::cout << i << std::endl;
    }
};

int main() {
    Foo f;
    f.i = 100;
    auto func = std::bind(&Foo::test, std::forward<Foo>(f));
    f.i = 1000;
    func();
}

Pero elstd::bind declaración no se une af por referencia. Vocaciónfunc imprime "100" en lugar de "1000", que es lo que quiero.

Sin embargo, si cambio la declaración para tomar un puntero, funciona.

auto func = std::bind(&Foo::test, &f);

Pero esto esta pasandof por puntero por mi entendimiento, y como pensabastd::bind toma una referencia de valor rArg&& (como se muestraaquí) ¿Cómo puede funcionar esto?

¿Puede alguien por favor explicar esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta