0

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

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

谁能建议我如何实现这一点?

4

2 回答 2

4

如果您不想使用va_args并且不想使用支持可变参数模板的最新编译器(如免费和开源GCCClang编译器),则无法实现。如果您可以接受参数数量的上限,则可以使用Boost.Preprocessor定义参数为 0 的N函数。

于 2013-03-26T08:50:52.750 回答
0

你也可以通过传入一个 void 指针数组来作弊,

void func(void**args);

并要求最后一个为 Null,或传入一个向量,

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

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

于 2013-03-26T13:08:55.910 回答