В принципе, я хотел бы иметь следующую семантику:
#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
}
Я понимаю, что std:: function обертывает копию вызываемого объекта, но есть ли способ получить ссылку на вызываемый объект с помощью std:: function?