我正在尝试使用具有默认参数的函数作为函数指针模板参数:
template <void (*F)()>
class A {};
void foo1(int a = 0) {}
void foo2() {}
int main()
{
//A<foo1> a1; <-- doesn't work
A<foo2> a2;
}
编译器错误是:
main.cpp:7:7:错误:无法将模板参数“foo1”转换为“void (*)()”</p>
是否有特定的语法可以工作?还是特定的语言限制?否则,替代方法是使用两个单独的函数而不是默认参数:
void foo1(int a) {}
void foo1() { foo1(0); }
更新 我知道签名是不同的,但我想知道是否有一种方法可以方便地进行这项工作,而无需使用默认参数修改所有函数?