任意数量的任意类型的参数

any number of any type of arguments

本文关键字:参数 类型 任意 任意数      更新时间:2023-10-16

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

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

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

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

你也可以欺骗,通过传递一个void指针数组,

void func(void**args);

并要求最后一个为Null,或者传递一个vector

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

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