我对以下行为感到有些困惑。我将一个带有默认值的参数和另一个参数一起传递给函数作为模板参数,并只调用函数一次。为什么会出现编译错误?如何解决或规避这个问题?
请注意,这个问题与使用默认参数调用模板函数无关。 错误信息:
#include <iostream>
using namespace std;
template<typename Function>
void eval(Function function) {
function(10);
}
void sum(int i, int j = 0) {
cout << "Sum is " << i + j;
}
int main() {
sum(10); // OK, of course :)
eval(sum); // Error!
}
请注意,这个问题与使用默认参数调用模板函数无关。 错误信息:
prog.cpp: In instantiation of 'void eval(Function) [with Function = void (*)(int, int)]':
prog.cpp:15:10: required from here
prog.cpp:6:10: error: too few arguments to function
function(10);
^
sum
不是一个模板。 - Aaron McDaid