我需要包装一个库函数,它可以在输入中接收可变数量的参数。 这些参数可以是不同类型的。 特别是,我得到一个标识类型的整数参数,以及一个可以是数字或字符串的参数。
我尝试使用以下函数,但是内部函数的参数列表不正确。
int function2(int rtype, ...);
int function1(int rtype, ...){
va_list args;
va_start(args, rtype);
int stato = function2(rtype, args);
va_end(args);
return stato;
}
将此包装器与vprintf而不是function2一起使用,可以正常工作。
有一种更简洁的方法可以将变量参数列表传递给函数吗?
答案 0 :(得分:2)
这是最通用的方式:
template<typename... A>
auto function1(A&&... a)
-> decltype(function2(std::forward<A>(a)...))
{ return function2(std::forward<A>(a)...); }