3

C++ 标准区分内置类型和structclass类型。对于后者,如果语言提供了适当的运算符,则允许重载运算符,例如+,*=&,但对于内置类型则不允许。AFAIK,标准中没有提到 SSE/AVX 类型(但请纠正我),所以应该能够声明这些运算符。GCC 不允许这样做,但 ICC 允许。哪一个是正确的?

我真的很想拥有按位操作(如&=),但令人讨厌的是,GCC 不提供它们(for __m128),也不允许我声明它们。

4

2 回答 2

8

完全正确。这些类型是 C++ 的扩展,而不是内置的(C++ 中几乎没有任何内置的内容以下划线开头)。由于它们是扩展,因此实现可以随意对它们施加任何限制。

于 2012-11-01T11:57:04.360 回答
6

它们不是内置的。C++ 不依赖于特定的硬件架构特性。

于 2012-11-01T11:52:25.400 回答