包装到具有可变数量参数的函数

Wrapper to a function with a variable number of parameters

本文关键字:参数 函数 包装      更新时间:2023-10-16

我需要包装一个库函数,它可以在输入中接收可变数量的参数。这些参数可以是不同的类型。特别地,我得到一个标识类型的整型参数,以及一个可以是数字或字符串的参数。

我已经尝试使用下面的函数,但是内部函数的参数列表不正确。

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,工作正常。

有一个更干净的方式来传递参数的变量列表到一个函数?

这是最通用的方法:

template<typename... A>
auto function1(A&&... a)
-> decltype(function2(std::forward<A>(a)...))
   { return function2(std::forward<A>(a)...); }