对齐SSE的模板矢量结构

时间:2012-02-27 06:20:47

标签: c++ templates vector alignment sse

我正在使用MSVC ++ Express 2010 for windows编写软件rasteriser。我正在使用SSE并需要对齐的数据结构。我为不同的基本数据类型(float,int等)提供了许多单独的向量结构,为了方便起见,我想将其转换为一个模板化结构。已经很好地用于对齐结构的_declspec(align(16))标记似乎不适用于模板。我有什么选择?这就是我想要实现的目标:

/* _declspec(align(16)) */
template< typename T > struct baseVector 
{
    T   v[ 4 ];
};

typedef baseVector< float > vector, vertex, point;  // etc

我尝试过专门化模板并使用_declspec(align()),但编译器抱怨。我也试过使用#pragma pack(),但是当这些结构是更高级别结构的成员时,我认为没有任何对齐效果。

1 个答案:

答案 0 :(得分:5)

declspec位置错误。它应该在struct之后。

template<typename T> 
struct _declspec(align(16)) baseVector 
{
    T v[4];
};