任何数量的任何类型的参数

时间:2013-03-26 08:45:04

标签: c++

我有一个函数可以接受任意数量的任何类型的参数(泛型参数)。

我不想使用va_arg东西,我的编译器不支持可变参数模板参数。我使用boost库。

有谁能建议我如何实现这个?

2 个答案:

答案 0 :(得分:4)

如果您不想使用va_args并且不想使用支持可变参数模板的最新编译器(例如免费和开源GCCClang编译器),没有办法实现这一点。如果您可以使用参数数量的上限,则可以使用Boost.Preprocessor来定义从0到N个参数的函数。

答案 1 :(得分:0)

你也可以通过传入一系列无效指针来作弊,

void func(void**args);

并要求最后一个为空,或传递一个向量,

void func(std::vector<void*> args);

但是您将API暴露给滥用和无法追踪的运行时错误,任何体面的代码审核都会要求您离开并正确地重新设计代码。