Kann mir jemand helfen, die Funktion test
unten zu implementieren, so dass es Callable
und std::function
akzeptiert und true
zurückgibt, wenn das Ziel std::function
das Callable ist? Ich habe verschiedene Dinge ausprobiert, aber keiner von ihnen funktioniert die ganze Zeit und ich kann nicht einmal für einen von ihnen herausfinden, warum sie für die Fälle arbeiten, in denen sie funktionieren.
( Ссылка )
Dies funktioniert nicht für Lambdas, weil Lambdas keine operator==
haben.
Dies wird nicht für Ihre Struktur funktionieren, weil es keine operator==
hat.
Es wird für Funktionszeiger funktionieren, weil sie operator==
haben.
jetzt funktioniert es. Natürlich stimmen sowohl bar
als auch baz
mit allen bob
überein.
Nun speichert die Funktion eine Kopie von allem, was Sie passieren. Man kann also die Adresse der in Funktion gespeicherten Funktion nicht mit der Adresse der Sache vergleichen, von der sie kopiert wurde, und ein nützliches Ergebnis erhalten.
std::ref
umschließt einen Zeiger, um eine Referenz zu bilden.