¿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?