メンバ関数に暗黙のthis
ポインタパラメータがあります。 std::function
がこの署名を受け入れるのはなぜですか?Sは単純なクラスですか? (complete sample)なぜstd ::関数は署名内でこの参照を受け入れますか?
std::function<void(S &)> func = &S::foo;
も動作し、オブジェクトを区別し、それを呼び出す:
S s1 = {5};
S s2 = {6};
func(s1); //prints 5
func(s2); //prints 6
私が正常に期待することは、それは同様に動作ポインタを、必要とすることである:(complete sample)
std::function<void(S * const)> func = &S::foo;
S s1 = {5};
S s2 = {6};
func(&s1); //prints 5
func(&s2); //prints 6
なぜ暗黙のthis
パラメーターがポインターである場合に、メンバー関数に参照を渡すと、最初のものが機能しますか?
これは非常に有益な読書でした、ありがとうございました。 'std :: function'は生の関数ポインタとは独立していると考えて、それがラップしているものの使いやすさを増やすのが好きなことをする力を持っていると考えると、もっと意味があります。 – chris