【发布时间】:2021-06-17 00:49:37
【问题描述】:
以下 C++ 代码无法编译:
template <typename T>
void f(int, bool = true);
void g()
{
auto h = f<int>;
h(1); // error: too few arguments to function
}
相反,我必须使用第二个参数调用h:
h(1, true);
为什么h(1) 不起作用?
有没有一种简单的方法可以给模板函数取别名以绑定模板参数,同时保留默认函数参数?
【问题讨论】:
-
别名仅适用于类型。默认参数值不是函数签名的一部分,因此它们不能通过类型别名保留。
标签: c++ templates default-arguments