【发布时间】:2021-09-03 11:56:53
【问题描述】:
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'
}
为什么默认参数在模板函数中不起作用?
编辑:我也尝试过关注,不知道为什么效果不佳。
void g(int, auto = 3.14159)
{}
【问题讨论】:
-
第二次调用中模板参数
T的类型应该如何解析? -
尝试将模板参数的类型也默认为
double。 -
请不要在收到答复后更改您的问题。
-
你用最后一次编辑完全改变了问题......
-
我回滚了你的问题,以便答案有意义。如果您有新问题,请提出新问题。
标签: c++ function templates standards overload-resolution