Mam getTotal funkcję:Przechwytywanie łamie moja funkcja lambda
int getTotal(const HitMap& hitMap, bool(*accept)(int chan))
gdzie drugi argument jest funkcja określająca bool której członkowie hitMap pojemnika należy dodać do całości.
Próbuję wywołać to z lambda. To działa:
auto boxresult =
getTotal(piHits, [](int pmt)->bool
{ return (pmt/100) == 1;});
ale to nie:
int sector = 100;
auto boxresult =
getTotal(piHits, [sector](int pmt)->bool
{ return (pmt/sector) == 1;});
pojawia się błąd
cannot convert ‘main(int, char**)::<lambda(int)>’ to ‘bool (*)(int)’
for argument ‘2’ to ‘int getTotal(const HitMap&, bool (*)(int))’
z mojego kompilator (gcc 4.6.3). Próbowałem [§or]
i [=sector]
, ale nie miało to znaczenia.
Co robię źle?
Tylko niezapisujące lambdy można przekonwertować na funkcję * wskaźnik *. Kropka. – Xeo