【发布时间】:2014-09-03 16:21:48
【问题描述】:
我们可以使用 stdarg 库中的 ... 符号创建具有可变数量参数的函数。是否也可以通过引用传递这些参数?例如。可能会返回可变数量的输出值。
【问题讨论】:
标签: c++ parameter-passing pass-by-reference
我们可以使用 stdarg 库中的 ... 符号创建具有可变数量参数的函数。是否也可以通过引用传递这些参数?例如。可能会返回可变数量的输出值。
【问题讨论】:
标签: c++ parameter-passing pass-by-reference
对于<stdarg.h> 意义上的可变参数函数,并非如此(template varargs 除外)。你不能打电话
void foo(int, ...);
作为
int x = 0, y = 1;
foo(2,x,y);
并期望 x 和 y 通过引用传递。但是,您可以传递他们的地址:
foo(2, &x, &y);
您可能还可以使用可变参数模板技巧或预处理器宏技巧将FOO(x,y) 转换为foo(2,&x,&y)
【讨论】:
stdarg.h 不能,但如果你使用 c++ 功能,则可以。
我建议研究 std::tie 的实现作为标准库如何做到这一点的示例。
【讨论】:
<stdarg.h>