利用VC2012,編譯器會自動處理調用約定時,lambda函數與沒有捕獲列表中。 例如熱處理C++ 11拉姆達與這兩個指針捕獲和調用約定指定
EnumWindows([](HWND, LPARAM){ return TRUE; }, 0); // compile with no problem
但是當我把這個指針指向捕獲列表時,它無法編譯。 例如
EnumWindows([this](HWND, LPARAM){ return my_class_member_function(); }, 0); // error
有人可以讓我知道是否有辦法在lambda函數內調用成員函數嗎?
感謝,萬里
是(我已經upvoted你啦)。 – Angew
該解決方案很酷且棘手,但不是通用的。也許下一個版本的C++ spec/impl會更加正確和流暢地處理它? –
@MilesChen,這已經是可能的,定義新的API時接受'的std :: function'或任何可調用的類型(使用模板)。但是對於基於函數指針的接口,您需要以該接口支持的方式傳遞狀態。 – zch