【发布时间】:2015-11-17 02:52:08
【问题描述】:
我一直在尝试获取一个模板函数来调用一组类似的函数以避免样板。
FooA(float a, Widget* w);
FooB(int b, Widget* w);
FooC(int c, Widget* w);
FooD(int d, int e, Widget* w);
template <typename... Args>
static void RunFoo(void (*foo)(Args..., Widget*), Args... args) {
Widget w
foo(args, &w);
}
我不明白为什么这适用于:
float a = 10;
RunFoo(FooA, a);
但每当我尝试使用多个参数时它都会失败:
int a = 10;
int b = 3;
RunFoo(FooD, a, b);
编译失败,报错: "候选模板被忽略:模板参数推导失败"
这超出了 c++ 模板的能力吗?
【问题讨论】:
标签: c++ templates c++11 template-argument-deduction