C++ 如何从std::函数获取此指针?

C++ 如何从std::函数获取此指针?,c++,this,std-function,this-pointer,C++,This,Std Function,This Pointer,由于std::function可以保存成员函数,因此它必须在某处存储指向对象实例的指针 如何从包含成员函数的std::function中获取此指针?类型为std::function的对象包含可调用对象。指向成员函数的指针是一种可调用对象;可以使用适当类类型的参数以及所需的任何附加参数来调用它。例如: struct S { void f(int); }; std::function<void(S, int)> g(&S::f); 请注意,std::function对象

由于
std::function
可以保存成员函数,因此它必须在某处存储指向对象实例的指针


如何从包含成员函数的
std::function
中获取
指针?

类型为
std::function
的对象包含可调用对象。指向成员函数的指针是一种可调用对象;可以使用适当类类型的参数以及所需的任何附加参数来调用它。例如:

struct S {
    void f(int);
};
std::function<void(S, int)> g(&S::f);

请注意,
std::function
对象不包含
S
对象;只有当您调用它时,函数指针才会绑定到对象。

您是否查看过例如?@OliCharlesworth。当然了。告诉我我是否对答案视而不见。我很确定这类信息是故意不在库中公开的,因此以可移植的方式无法访问。我的目标是打开作为
std::function
传递给另一个函数的lambda。那我怎么办呢?通过展开,我的意思是将其拆分为
this
指针和使用
std::function::target
进行进一步处理的静态函数指针。@danijar:为什么不将目标放在问题中呢?您的问题毫无意义。@danijar您可以创建自己的函数对象,它绑定一个
这个
指针并允许检索。@danijar如果它是一个静态函数,就没有绑定对象实例。当我将lambda表达式存储为
std::function
时,它是否已经绑定了
这个
指针?
S s;
g(s, 3);