mit std :: function :: target korrekt

8

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.

%Vor%

( Ссылка )

    
baruch 10.01.2018, 10:14
quelle

1 Antwort

5
%Vor%

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.

%Vor%

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.

    
Yakk 10.01.2018, 12:59
quelle

Tags und Links