Betrachten Sie den folgenden Code ein:Wie spezialisieren/überladen Sie eine Funktion für gleiche Template-Parametertypen?
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);
}
ich zum Helper
eine Funktion hinzugefügt werden soll Abgüsse behandeln, in denen die Parameter und die Rückgabetypen Gleichen sind. Alle meine Versuche, sich soweit zu spezialisieren/überladen, sind bei verschiedenen Kompilierungsfehlern fehlgeschlagen.
So etwas wie die folgenden in der Klasse Körper:
template<typename T> static T Cast(const T par) {
return par;
}
Es sieht aus wie der Code einige seiner Vorlage Argumente verloren, wenn hier kopiert werden; Kannst du bestätigen, dass es korrekt ist? –
@DanielH: OP verwendete Spezialisierungen. – Jarod42
Also, warum nicht hier normale Überladung verwenden? Sie stellen 3 Überladungen zur Verfügung: die eine, die __m256i nimmt, die eine, die __m256d nimmt, und die normale Vorlage, die Sie mit Ihrem generischen Algorithmus verwenden. –