C++ 导致'candidate function not viable:'的 Lambda

C++ Lambda causing 'candidate function not viable:'

本文关键字:Lambda viable candidate 导致 C++ function not      更新时间:2023-10-16

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

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

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