0
由於我SIMD'ifying我的代碼我決定使用模板專門化來處理每個類型的案件,但它似乎我做了錯誤的事情。全模板專業化錯誤
template<typename T> struct __declspec(align(16)) TVec2
{
};
template<> __declspec(align(16)) struct TVec2<s64>
{
union
{
struct
{
s64 x, y;
};
struct
{
__m128i v;
};
};
TVec2()
{
v = _mm_setzero_si128();
}
TVec2(s64 scalar)
{
v = _mm_set_epi64x(scalar, scalar);
}
TVec2(s64 x, s64 y)
{
v = _mm_set_epi64x(x, y);
}
template<typename U> operator TVec2<U>() const
{
return TVec2<U>(static_cast<U>(x), static_cast<U>(y));
}
s64& operator[](word index)
{
return v.m128i_i64[index];
}
const s64& operator[](word index) const
{
return v.m128i_i64[index];
}
};
// There are other specializations but they produce the same errors
當我在Visual Studio(2015年)我得到(C2988:unrecognizeable模板聲明/定義)編譯之後(C2059:語法錯誤: 「<末解析>」)。我很確定我正確地遵循了專業化的文檔,但我很容易出錯。
哇,這是一個簡單的問題,感謝您的發現。 – Jarann