template<typename T>
void CallFunction(T value, void (*function) (T value) )
{
function(value);
}
void FilterValue(int value)
{
auto function = [] (int id) { /* ... */ };
CallFunction(value, function);
}
此代码未编译错误没有匹配的函数调用CallFunction()。 我发现我必须做一个明确的呼叫
CallFunction<int>(value, function);
或将功能更改为
template<typename T>
void CallFunction(T value, void (*function) (decltype(value) )
您能解释一下这里发生的事情吗?