C++ Lambda导致'候选函数不可行:'

Jan*_*ger 1 c++ lambda emscripten

添加捕获元素时,为什么以下lambda不符合签名?

[&callback](unsigned handle, void* userData, void* data, unsigned size) -> void { ... }
Run Code Online (Sandbox Code Playgroud)

但这会吗?

[](unsigned handle, void* userData, void* data, unsigned size) -> void { ... }
Run Code Online (Sandbox Code Playgroud)

签名:

typedef void (*em_async_wget2_data_onload_func)(unsigned, void*, void*, unsigned);
Run Code Online (Sandbox Code Playgroud)

jep*_*pio 5

带捕获的Lambda无法简单地转换为函数指针.为了获得最大的灵活性(但不是性能),请考虑使用std::function<void(unsigned,void*,void*,unsigned)>