添加捕获元素时,为什么以下lambda不符合签名?
[&callback](unsigned handle, void* userData, void* data, unsigned size) -> void { ... }
但这会吗?
[](unsigned handle, void* userData, void* data, unsigned size) -> void { ... }
签名:
typedef void (*em_async_wget2_data_onload_func)(unsigned, void*, void*, unsigned);
答案 0 :(得分:5)
带有捕获的Lambda不能简单地转换为函数指针。为了获得最大的灵活性(但不是性能),请考虑使用std::function<void(unsigned,void*,void*,unsigned)>
答案 1 :(得分:3)
只有无捕获lambdas可以转换为指向函数的指针。