为什么下面的代码不能编译?没有匹配函数错误[模板]
template <class T>
void foo_bar(T =5 , T = 10 , T = 15)
{
}
int main()
{
foo_bar();
}
我得到这个错误no matching function for call to 'foo_bar()'
。如何解决这个错误?
为什么下面的代码不能编译?没有匹配函数错误[模板]
template <class T>
void foo_bar(T =5 , T = 10 , T = 15)
{
}
int main()
{
foo_bar();
}
我得到这个错误no matching function for call to 'foo_bar()'
。如何解决这个错误?
函数中默认参数的类型无法帮助推导出模板type-parameter
。当您调用foo_bar()
等功能时,无法在任何情况下推导出T
,因此您会收到错误消息。所以试试这个foo_bar<int>();
。在这种情况下,将不会有任何此类问题,因为明确指定了T
的类型。
编译器必须能够计算出类型,但是如果你永远不会给它,它就不知道如何处理这些默认值。基本上,它不能匹配你的调用任何函数,因为你没有给它一个类型的工作和功能定义没有帮助(由于上述原因)。所以你需要在括号中添加一个类型的电话,如
int main()
{
foo_bar<int>();
return 0;
}
或任何类型罢工你的幻想。
这个工程。 thankz。 – FooBar 2010-11-18 03:11:55