考慮下面的代碼:如何針對相同的模板參數類型專門化/重載函數?
class Helper {
public:
template<typename taResult, typename taParam> static taResult Cast(const taParam par);
};
template<> inline __m256d Helper ::Cast(const __m256i par) {
return _mm256_castsi256_pd(par);
}
template<> inline __m256i Helper ::Cast(const __m256d par) {
return _mm256_castpd_si256(par);
}
我想添加到Helper
一個函數來處理鑄件其中參數和返回類型是平等的。我迄今爲止所有嘗試專門化/重載的失敗都是因爲編譯錯誤。
喜歡的東西在類體內以下幾點:
template<typename T> static T Cast(const T par) {
return par;
}
它看起來像你的代碼失去了一些模板參數在這裏被複制時;你能證實它是正確的嗎? –
@DanielH:OP使用的專業化。 – Jarod42
那麼,爲什麼不在這裏使用正常的重載呢?你提供了3個重載:一個採用__m256i,一個採用__m256d,另一個採用普通模板,不管你的通用算法是什麼。 –