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

时间:2015-10-14 07:56:05

标签: c++ lambda emscripten

添加捕获元素时,为什么以下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);

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

只有无捕获lambdas可以转换为指向函数的指针。