用变量数的参数包装一个函数。

时间:2022-04-27 18:02:41

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)...); }