如何在模板實例化時間找到模板參數的類型?例如,我想以下模板來實例化到2種不同的功能,這取決於參數:模板實例化時間typeid()
template <typename T> void test(T a) {
if-T-is-int {
doSomethingWithInt(a);
} else {
doSomethingElse(a);
}
}
當與int
實例化,將得到的函數將是:
void test(int a) { doSomethingWithInt(a); }
和時用float
例如實例化,這將是:
void test(float a) { doSomethingElse(a); }
爲什麼不是正常函數的兩個重載?如果你想要的行爲不是'int'和'float',那就是你開始需要模板的地方。 – chris 2012-08-15 01:38:43
@chris,我真正擁有的是一個更大的函數,它在功能上略有不同,具體取決於類型。所以我正在考慮使用你的建議,然後將大部分代碼移動到一個單獨的內聯函數中。 – rid 2012-08-15 01:56:40
如果它運行得更好,也可以使用'std :: is_same':http://ideone.com/aFONa – chris 2012-08-15 02:02:27