поскольку std::function
может содержать функции-члены, поэтому он должен где-то хранить указатель на экземпляр объекта.
Как я могу получить this
указатель от std::function
что содержит функцию-член?
Объект типа std::function
держит вызываемый объект. Указатель на функцию-член является своего рода вызываемым объектом; он может быть вызван с аргументом соответствующего типа класса плюс любые дополнительные аргументы, которые ему нужны. Например:
struct S {
void f(int);
};
std::function<void(S, int)> g(&S::f);
Чтобы вызвать его, передайте объект типа S
:
S s;
g(s, 3);
Обратите внимание, что std::function
объект делает не держать S
объект; только когда вы вызываете его, указатель функции связывается с объектом.
Других решений пока нет …