如何在一个函数中组合多种类型
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 template用fold expression结合sizeof...
运算符(operator):
template<typename... Args>
auto average(Args&&...args)
{
return (args + ...) / double(sizeof...(args));
}
关于c++ - 相互组合多个模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51270440/