Le funzioni membro hanno un parametro puntatore this
implicito. Perché std::function
accetta questa firma, quindi, dove S è una classe semplice? (complete sample)Perché la funzione std :: accetta un riferimento nella firma?
std::function<void(S &)> func = &S::foo;
Calling funziona, troppo, e distingue gli oggetti:
S s1 = {5};
S s2 = {6};
func(s1); //prints 5
func(s2); //prints 6
Quello che mi piacerebbe normalmente si aspetta è che ha bisogno di un puntatore, che funziona così: (complete sample)
Perché il primo funziona quando si passa un riferimento nella funzione membro quando il parametro implicito this
è un puntatore?
Questa è stata una lettura molto istruttiva, grazie. Ha molto più senso quando si considera che 'std :: function' è indipendente dai puntatori di funzioni raw e ha il potere di fare ciò che gli piace per aumentare l'usabilità della cosa che sta avvolgendo. – chris