c++ c++11 std-function

c++ - Referencia del funcional a través de una función std::



c++11 std-function (1)

Básicamente, me gustaría tener la siguiente semántica:

#include <functional> #include <iostream> class test { public: void add(std::function<void()> f) { f(); } void operator()() { ++x; } int x = 33; }; int main() { test t; t.add(t); // wanted: x == 34 instead: x == 33 since add(t) copies it }

Entiendo que std :: function envuelve una copia del objeto invocable, pero ¿hay alguna forma de obtener una referencia a un objeto invocable usando std :: function?


Desea utilizar la función de plantilla std::ref para crear un contenedor de referencia para su instancia:

std::reference_wrapper es una plantilla de clase que envuelve una referencia en un objeto asignable y copiable.

Las plantillas de función ref y cref son funciones de ayuda que generan un objeto de tipo std::reference_wrapper , que utiliza la deducción de argumentos de plantilla para determinar el argumento de plantilla del resultado.

Lo usarías así:

t.add(std::ref(t));