struct A {};
template<typename T>
void f(int n, T m = 3.14159)
{}
int main()
{
f(8, A{}); // ok
f(8); // error: no matching function for call to 'f'
}
参见 online demo
为什么默认参数在模板函数中不起作用?
编辑:我也试过跟随,想知道为什么它不起作用。
void g(int, auto = 3.14159)
{}
最佳答案
默认函数参数不影响模板参数推导。
您还需要模板参数的默认参数:typename T = double
。
至于void g(int, auto = 3.14159)
,好像没办法修复了。
关于c++ - 为什么默认参数在模板函数中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68040354/