繁体   English   中英

为什么C ++不允许在非模板函数中使用可变参数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM