は、次のコードを考えてみましょう:等しいテンプレートパラメータタイプの関数を特化/オーバーロードする方法は?
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つのオーバーロードを提供します:1つは__m256i、1つは__m256d、もう1つは通常のテンプレートです。 –