如何在一个函数中将多种类型组合在一起

template < typename T1 >
template < typename T2 >
T2 average( T1 v1, T1 v2, T1 v3 )
{
    T averageValue;
    cout<<"after averageValue; v1: "<<typeid(v1).name()
        <<" v2: "<<typeid(v2).name()
        <<" v3: "<<typeid(v3).name()
        <<" averageValue: "<<typeid(averageValue).name();
    averageValue =(v1+v2+v3)/.3;
    cout<<"\nAfter averageValue =(v1+v2+v3)/3; averageValue: "<<typeid(averageValue).name();
    return averageValue;
};

我知道代码不会编译,但我想知道是否有任何办法可以做这样的事情

最佳答案

在C++ 17中,您可以将variadic templatefold expression sizeof... 运算符结合使用:

template<typename... Args>
auto average(Args&&...args)
{
    return (args + ...) / double(sizeof...(args));
}

07-28 01:04