Gui*_*ume 3 c++ arrays attributes
我想用SSE内在函数实现一个Vector类(表示3个浮点数的向量)(所以我不会使用__m128类型的第4个元素).但我希望能够像属性一样轻松访问它们:所以myVector.x将访问vec中的0-31位,myVector.y将访问vec中的32-63位,但无需调用某些getX()方法.'x'属性将是'vec'的0-31位的一种别名.可能吗 ?
class Vector {
public:
float x;
float y;
float z;
private:
__m128 vec;
}
Run Code Online (Sandbox Code Playgroud)
不,因为这违反了强烈的别名规则.
当然你可以使用强制转换或联合假装__m128
是一系列浮点数,但优化器不会保持对你的一致性,因为你违反了语言的规则.
请参阅什么是严格别名规则?
(根据规则,使用union进行访问是安全的,但这仅适用于命名联合.获取指向联合成员的指针或引用然后直接使用指针或引用是不安全的.)
归档时间: |
|
查看次数: |
1972 次 |
最近记录: |