Since std::function
can hold member functions, so it must store a pointer to the object instance somewhere.
How can I fetch the this
pointer from a std::function
that holds a member function?
An object of type std::function
holds a callable object. A pointer to member function is a kind of callable object; it can be called with an argument of the appropriate class type, plus any additional arguments that it needs. For example:
struct S {
void f(int);
};
std::function<void(S, int)> g(&S::f);
To call it, pass an object of type S
:
S s;
g(s, 3);
Note that the std::function
object does not hold an S
object; it's only when you call it that the function pointer gets bound to an object.