可以通过引用传递变量函数参数列表吗?

时间:2014-09-03 16:21:48

标签: c++ parameter-passing pass-by-reference

我们可以使用stdarg库中的...表示法创建具有可变数量参数的函数。是否也可以通过引用传递这些参数?例如。也许是为了返回可变数量的输出值。

2 个答案:

答案 0 :(得分:3)

您不能使用stdarg.h,但如果您使用c ++功能,则可以。

我建议查看std::tie的实现,作为标准库如何执行此操作的示例。

答案 1 :(得分:3)

对于<stdarg.h>意义上的可变函数,不是真的(template varargs除外)。你不能打电话

void foo(int, ...);

作为

int x = 0, y = 1;
foo(2,x,y);

并期望xy通过引用传递。但是,您可以传递他们的地址:

foo(2, &x, &y);

您可能可以使用可变参数模板技巧或预处理器宏技巧将FOO(x,y)转换为foo(2,&x,&y)