将多个模板相互组合
Combining multiple templates in each other
本文关键字:组合 更新时间:2023-10-16
如何在一个函数中组合多种类型,如
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中,您可以将带有fold表达式的变元模板与sizeof...
运算符一起使用:
template<typename... Args>
auto average(Args&&...args)
{
return (args + ...) / double(sizeof...(args));
}
您可以使用多个模板参数
template< typename T1, typename T2>
T2 average(T1 v1, T1 v2, T1 v3){
// stuff
}
只需确保将averageValue
声明为T2
即可。当然,只有在定义了(v1+v2+v3)/3
并且可以转换为T2
的情况下,这才会起作用。
相关文章:
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 可组合的lambda/std::函数与std::可选
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 混合组合和继承的C++问题
- 我需要将多个函数组合为一个函数
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 通过组合不同的类型来创建唯一的id
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 模板元编程:如何将参数包组合成新的参数包
- 检查向量是否具有所有可能的字符组合
- 如何在加密++中将两个源组合成新的源
- 根中的组合
- 更改 C++ 中的组合分类变量
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- 组合字符串不适用于 libCurl,C++
- 测试两个类型列表中的所有组合
- 将多个 for 循环组合成单个迭代器
- 如何从组合指数中找到仓位
- 防止组合框被关闭
- 如何解决可能的唯一组合问题