为什么当std :: function在其签名中使用模板参数时,lambda不能隐式转换为std :: function?
编译良好:
template <typename T>
void testFunc(T t, std::function<void()> a) {
}
testFunc(1, [](){});
不编译:
template <typename T>
void testFunc(T t, std::function<void(T)> a) {
}
testFunc(1, [](int a){});
没有匹配功能可调用'testFunc'
候选模板被忽略:无法将'function'与'(/main.cpp:193:17)上的lambda相匹配
编译良好:
template <typename T>
void testFunc(T t, std::function<void(decltype(t))> a) {
}
testFunc(1, [](int a){});