[英]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.