C ++标准区分内置类型和struct
或class
类型。对于后者,当语言提供适当的运算符时,允许重载运算符,例如+
,*=
或&
,但不允许内置类型。 AFAIK,标准中没有提到SSE / AVX类型(但请纠正我),因此应该能够声明这些运算符。海湾合作委员会不允许这样做,但ICC确实如此。哪一个是正确的?
我真的很想进行逐位操作(比如&=
),但是,令人讨厌的是,GCC没有提供它们(对于__m128
),也不允许我声明它们。 / p>
答案 0 :(得分:8)
一切都是正确的。这些类型是C ++的扩展,没有内置(几乎没有内置于C ++中的内容以下划线开头)。由于它们是扩展,因此实现可以自由地对它们想要的任何限制。
答案 1 :(得分:6)
它们不是内置的。 C ++不依赖于特定的HW架构功能。