Ich habe eine Funktion getTotal:Capturing bricht mir das Lambda-Funktion
int getTotal(const HitMap& hitMap, bool(*accept)(int chan))
, wo das zweite Argument ist ein Bool Funktion angibt, welche Mitglieder des Behälters hitMap sollte der insgesamt hinzugefügt werden.
Ich versuche, es mit einem Lambda zu nennen. Dies funktioniert:
auto boxresult =
getTotal(piHits, [](int pmt)->bool
{ return (pmt/100) == 1;});
aber nicht:
int sector = 100;
auto boxresult =
getTotal(piHits, [sector](int pmt)->bool
{ return (pmt/sector) == 1;});
ich den Fehler
cannot convert ‘main(int, char**)::<lambda(int)>’ to ‘bool (*)(int)’
for argument ‘2’ to ‘int getTotal(const HitMap&, bool (*)(int))’
von meinem Compiler (GCC 4.6.3). Ich versuchte [§or]
und [=sector]
, aber es machte keinen Unterschied.
Was mache ich falsch?
Nur nicht erfassbare Lambdas können in eine Funktion * pointer * konvertiert werden. Zeitraum. – Xeo