是C++中的__m128,__ m128d,__ m256等内置类型?

Wal*_*ter 3 c++ sse avx operator-keyword

C++标准区分内置类型和/ structclass类型.对于后者则允许重载操作,例如+,*=,或&,而不是内建类型,当由语言提供的适当的运算符.AFAIK,标准中没有提到SSE/AVX类型(但请纠正我),因此应该能够声明这些运算符.海湾合作委员会不允许这样做,但ICC确实如此.哪一个是正确的?

我真的很想进行逐位操作(比如&=),但是,令人讨厌的是,GCC没有提供它们(for __m128)也不允许我声明它们.

Pla*_*aHH 8

全部正确.这些类型是C++的扩展,没有内置(几乎没有内置于C++中的内容以下划线开头).由于它们是扩展,因此实现可以自由地对它们想要的任何限制.


Som*_*ame 6

它们不是内置的.C++不依赖于特定的HW架构功能.

  • 我不认为问题是它们是否可以被称为*内置*(这不是标准中的技术术语),是否应该允许在这些类型上重载运算符.请注意,您也可以将*内置*(不是标准中的术语)解释为*内置编译器*,在这种情况下它们实际上可能是内置的(或者不是,它们可能在某些头文件中定义) ) (3认同)