メンバー関数には、暗黙の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
暗黙のパラメーターがポインターであるときにメンバー関数に参照を渡すと、最初のパラメーターが機能するのはなぜですか?