如何将可变数量的参数传递给没有命名参数的 c++ 函数

How do to pass variable number of arguments to a function in c++ with no named parameters

本文关键字:函数 c++ 参数 参数传递      更新时间:2023-10-16

我需要编写一个接受可变数量参数的函数,它本质上是围绕类似snprintf函数的包装器。我一般了解如何执行此操作,如传递可变数量的参数所示。

看起来

,至少在 C 中,我们需要在变量参数开始之前将一个命名参数传递给函数(为什么 C 中不允许 void f(...)?)。

然而,相同问题的答案表明,这在C++很容易实现。我想知道如何实现这一点,特别是因为处理 vararg 函数的方法似乎与 C 相同(va_start 等)。还是他们指的是可变参数模板?

那么基本上是否可以编写一个没有命名参数的可变参数函数,如下所示,如果是这样,如何?

void f(...){
   ... 
}

附言如果可能的话,我想用 c++03 来做到这一点。

虽然C++语言允许编写参数列表仅包含...的函数,但该语言不提供访问使用参数列表声明的函数中的参数的方法(...)

基本上,C++中的此类函数因其在重载分辨率中的行为而存在(...参数匹配任何参数类型)。此类函数的主体将无法访问参数。如果您认为此类函数没有用处,请不要使用它们。

在一些众所周知的模板元编程技术中,这些函数通常用于非执行上下文中,在这种情况下,它们甚至不必定义 - 只需声明就足够了。