[英]Can template alias be used as a function input type?
我想知道是否可以将模板别名作为 function 输入类型,并且可以根据输入进一步确定“进一步”类型?
template<typename T>
using Vec = std::vector<T>;
我想定义一个 function:
void func(Vec& a){
for(auto &each :a){
//Do something
}
}
其中Vec
的类型可以根据输入a
导出。
在这样的示例中,可以将相同的func
应用于所有a
作为std::vector<ANY TYPE>
。
我有这样一个问题,因为我一开始就初始化了一个vec
并运行了一系列函数。
a = Vec<int>;
fun1(a);
fun2(a);
...
funN(a);
我想有相同的操作,但有不同的类型。
a = Vec<double>;
fun1(a);
fun2(a);
...
funN(a);
如果我遵循旧模板 function 它将是
a = Vec<int>;
fun1<int>(a);
fun2<int>(a);
...
funN<int>(a);
并改变为double
我必须做
a = Vec<double>;
fun1<double>(a);
fun2<double>(a);
...
funN<double>(a);
基本上,我必须将每个 function 的int
更改为double
。 我期待一些更简单的方法来做到这一点。
感谢模板参数推导,模板已经按照您想要的方式运行。
定义func
为
template<typename T>
void func(Vec<T>& a) {
// ...
}
会让你写
Vec<int> a{};
func(a);
Vec<double> b{};
func(b);
调用站点不需要显式类型参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.