Elementfunktionen haben einen impliziten this
Zeigerparameter. Warum akzeptiert std::function
diese Signatur dann, wo S eine einfache Klasse ist? (complete sample)Warum akzeptiert die Funktion std :: eine Referenz in der Signatur?
std::function<void(S &)> func = &S::foo;
es aufrufen funktioniert auch, und unterscheidet Objekte:
S s1 = {5};
S s2 = {6};
func(s1); //prints 5
func(s2); //prints 6
Was würde ich normalerweise erwarten ist, dass es einen Zeiger benötigt, die auch funktioniert: (complete sample)
Warum funktioniert der erste, wenn ich einen Verweis in die Elementfunktion übergebe, wenn der implizite Parameter this
ein Zeiger ist?
Das war eine sehr informative Lektüre, danke. Es macht viel mehr Sinn, wenn man bedenkt, dass "std :: function" unabhängig von rohen Funktionszeigern ist und die Macht hat, das zu tun, was sie möchte, um die Usability des Wrappings zu erhöhen. – chris