libev c ++ wrapper funktion_thunk

8
%Vor%

Hallo,

Ich benutze Libevs C ++ Wrapper ev ++. Es gibt dieses Stück Code in ev ++. H, dass ich weiß, wie man als API verwendet, aber nicht vollständig versteht. Ich kann einen Ctrl-C-Beobachter in der Ereignisschleife wie folgt einrichten:

%Vor%

wobei die Funktionssignatur von sigint_cb lautet:

%Vor%

Kann jemand erklären, warum function_thunk meine Signaturfunktion signt_cb magisch nach

umwandeln kann? %Vor%

Was C ++ Zauberei ist das? Vielen Dank.

    
lppier 11.04.2016, 07:24
quelle

1 Antwort

5

function_thunk zaubert die Signatur sigint_cb nicht magisch nach void (*cb)(EV_P_ ev_watcher *w, int revents) , sondern ruft sigint_cb mit korrekt gewichteten Argumenten auf.

Von Anfang an ist funktion_thunk eine Funktionsvorlage, die mit dem Funktionszeiger vom Typ void (*)(watcher &w, int) instantiiert werden kann. Wenn Sie also function_thunk<sigint_cb> irgendwo in Ihren Code schreiben, erstellt der Compiler eine entsprechende function_thunk Instanz, die wie folgt aussieht:

%Vor%

Beachten Sie auch, dass in Ihrem Beispiel ev::sig und watcher die gleichen Typen sind, andernfalls würde die Schablonenargumentableitung / -ersetzung für function_thunk fehlschlagen.

    
Anton Shakhmut 14.04.2016, 08:33
quelle

Tags und Links