[英]Why does C++ not allow variadic parameters in a non-template function?
int foo(int i)
{
return i;
}
int foo(int i, int... n)
{
return i + foo(n...);
}
int main()
{
return foo(1, 2, 3); // error
}
为什么C ++不允许这样直观的语法?
您需要模板机制来实例化您的第二个foo
函数,因为函数的签名仅在使用时确定。 因此,您可以在这里要求的唯一功能是,您的语法意味着一个函数模板,其中模板参数包被约束为int
类型。
但是,对于没有template关键字的模板存在相当大的反对意见。 但是,在这方面,概念TS将会发生变化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.