正在对齐SSE的模板矢量结构
Aligning template vector struct for SSE
我正在使用MSVC++Express 2010 for windows编写一个软件光栅器。我正在使用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(),但我认为当这些结构是更高级别结构的成员时,这不会产生任何对齐效果。
declspec
位于错误的位置。它应该在struct
之后。
template<typename T>
struct _declspec(align(16)) baseVector
{
T v[4];
};
相关文章:
- OPENCL结构对齐错误
- 数据结构对齐:为什么Char和STD :: String的数组不同
- interpret_cast和结构对齐
- 结构对齐填充、最大填充大小和结构成员顺序
- 与此类结构对齐是否以C 标准为标准
- 64位Windows API结构对齐导致命名管道上出现“拒绝访问”错误
- 如何检测/查找 64 位结构对齐问题
- 检索数据结构对齐信息
- C# 中的结构对齐
- 视觉C++中的结构对齐
- 为什么iOS中的结构对齐方式不同
- 内存对齐-结构的总大小是结构对齐的倍数,而不是处理大小
- 内存对齐到结构-对齐大小等于最大成员大小
- 结构对齐 C/C++
- C与C++结构对齐
- 警告 C4121 行为和结构对齐 (Visual Studio 2010)
- C/C++ 中的对象/结构对齐
- #pragma pack,模板类型和结构对齐
- Fscanf和结构对齐
- c++中的结构对齐和填充