C++ 没有匹配的函数错误[模板]

C++ 没有匹配的函数错误[模板],c++,templates,C++,Templates,为什么下面的代码不编译 template <class T> void foo_bar(T =5 , T = 10 , T = 15) { } int main() { foo_bar(); } 模板 空浮杆(T=5,T=10,T=15) { } int main() { foo_bar(); } 我得到这个错误调用'foo_bar()'时没有匹配的函数。。如何修复错误?函数中默认参数的类型无法帮助推断模板类型参数T,因此会出现错误 所以试试这个foo_bar()。在这种

为什么下面的代码不编译

template <class T>
void foo_bar(T =5 , T = 10 , T = 15)
{
}

int main()
{
   foo_bar();
}
模板
空浮杆(T=5,T=10,T=15)
{
}
int main()
{
foo_bar();
}

我得到这个错误
调用'foo_bar()'时没有匹配的函数。
。如何修复错误?

函数中默认参数的类型无法帮助推断模板
类型参数<当调用函数(如
foo\u bar()
时,在任何情况下都无法推断code>T
,因此会出现错误


所以试试这个
foo_bar()。在这种情况下,将不会有任何此类问题,因为明确指定了
t
的类型。

编译器必须能够找出类型,但如果您从未给出任何类型,它不知道如何处理这些默认值。基本上,它不能匹配您对任何函数的调用,因为您没有为它指定一个要使用的类型,并且函数定义也没有帮助(出于上述原因)。因此,您需要在调用中添加括号中的类型,如

int main()
{
foo_bar<int>();
return 0;
}
intmain()
{
foo_bar();
返回0;
}
或者任何你喜欢的类型