I need to wrap a library function that can receive in input a variable number of parameters. These parameters can be of different types. In particular, I get an integer parameter that identifying the type, and a parameter that can be a number or a string.
我需要包装一个库函数,它可以接收输入变量数量的参数。这些参数可以是不同类型的。特别是,我得到了一个整数参数,用来标识类型,以及一个可以是数字或字符串的参数。
I have tried using the following function, but the parameter list that comes to the internal function isn't right.
我尝试过使用下面的函数,但是对于内部函数的参数列表是不正确的。
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;
}
Using this wrapper with the vprintf instead of function2, is working properly.
使用这个带有vprintf而不是function2的包装器工作正常。
There is a cleaner way to pass a variable list of parameters to a function?
有一种更干净的方法将变量列表传递给函数?
1 个解决方案
#1
2
This is the most generic way:
这是最通用的方法:
template<typename... A>
auto function1(A&&... a)
-> decltype(function2(std::forward<A>(a)...))
{ return function2(std::forward<A>(a)...); }
#1
2
This is the most generic way:
这是最通用的方法:
template<typename... A>
auto function1(A&&... a)
-> decltype(function2(std::forward<A>(a)...))
{ return function2(std::forward<A>(a)...); }