c++ - 对齐 SSE 的模板 vector 结构

标签 c++ templates vector alignment sse

我正在使用 Windows 版 MSVC++ Express 2010 编写软件光栅化器。我正在使用 SSE 并且需要对齐的数据结构。我有许多针对不同基本数据类型(float、int 等)的独立 vector 结构,为了方便起见,我想将它们合并到一个模板化结构中。 _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() ,但我认为当这些结构是更高级别结构的成员时,这不会产生任何对齐效果。

最佳答案

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

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

关于c++ - 对齐 SSE 的模板 vector 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9460829/

相关文章:

c++ - 如何使用 OpenCV 图像蒙版

c++ - 使用 ocamlbuild 构建 C++ 代码

c++ - 在类模板中正确初始化静态 constexpr 数组?

c++ - 是否可以创建模板类的 vector 并调用其函数?

c++ - 链式操作的重载 +=

c++ - 初始化一个 C 字符串 vector

c++ - 使用 fscanf 时防止缓冲区溢出

C++ 长除法

php - 如何制作一个php模板引擎?

Java 从文件中读取对象 vector 仅读取 vector 中的第一个对象