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

时间:2014-03-27 15:06:12

标签: c++ wrapper user-defined-functions optional-parameters

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

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

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一起使用,可以正常工作。

有一种更简洁的方法可以将变量参数列表传递给函数吗?

1 个答案:

答案 0 :(得分:2)

这是最通用的方式:

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