成员函数有一个隐式this
指针参数。那么,为什么要std::function
接受这个签名,其中 S 是一个简单的类呢?(完整样本)
std::function<void(S &)> func = &S::foo;
调用它也有效,并且可以区分对象:
S s1 = {5};
S s2 = {6};
func(s1); //prints 5
func(s2); //prints 6
我通常期望的是它需要一个指针,它也可以工作:(完整示例)
std::function<void(S * const)> func = &S::foo;
S s1 = {5};
S s2 = {6};
func(&s1); //prints 5
func(&s2); //prints 6
this
当隐式参数是指针时,当我将引用传递给成员函数时,为什么第一个工作?