是C+中的内置类型uu m128、u m128d、u m256等+;? C++标准区分内置类型和结构> 或类< /代码>类型。对于后者,允许重载运算符,如+、*=或&,但对于内置类型,如果语言提供了适当的运算符,则不允许重载。顺便说一句,标准中没有提到SSE/AVX类型(但请纠正我),因此应该能够声明这些运算符。GCC不允许,但ICC允许。哪一个是正确的

是C+中的内置类型uu m128、u m128d、u m256等+;? C++标准区分内置类型和结构> 或类< /代码>类型。对于后者,允许重载运算符,如+、*=或&,但对于内置类型,如果语言提供了适当的运算符,则不允许重载。顺便说一句,标准中没有提到SSE/AVX类型(但请纠正我),因此应该能够声明这些运算符。GCC不允许,但ICC允许。哪一个是正确的,c++,operator-keyword,sse,avx,C++,Operator Keyword,Sse,Avx,我真的很想使用位操作(比如&=),但是,令人烦恼的是,GCC没有提供它们(对于\uu m128),也不允许我声明它们。它们不是内置的。C++不依赖于特定的硬件结构特性。 都是正确的。这些类型是C++的扩展,不是内置的(几乎没有内置到C++中的下划线)。因为它们是扩展,所以实现可以自由地对它们施加它想要的任何限制 我认为问题不在于它们是否可以被称为内置的(这不是标准中的技术术语),而在于是否应该允许在这些类型上重载操作符。请注意,您也可以将内置(不是标准中的术语)解释为编译器中的内置,在这种情况下

我真的很想使用位操作(比如
&=
),但是,令人烦恼的是,GCC没有提供它们(对于
\uu m128
),也不允许我声明它们。

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

都是正确的。这些类型是C++的扩展,不是内置的(几乎没有内置到C++中的下划线)。因为它们是扩展,所以实现可以自由地对它们施加它想要的任何限制

我认为问题不在于它们是否可以被称为内置的(这不是标准中的技术术语),而在于是否应该允许在这些类型上重载操作符。请注意,您也可以将内置(不是标准中的术语)解释为编译器中的内置,在这种情况下,它们可能实际上是内置的(或者不是,它们可能在某些头中定义),您确定吗?按位
\uuum128i和uuum128i
至少自gcc-4.4以来工作良好。它甚至被记录在在线文档中。@hirschhornsalz是的,但是
&
&=
只为
\uuuuum128i
定义,而不是为
\uuuuum128
定义。2如果我只有SSE(而不是SSE2),它没有定义,但是内在的
\u mm\u和\u ps(\uuuuuum128,\uuuum128)
仍然是。因此,对于
\uu m128
,应该有使用该内在函数实现的操作符
&
&=
。顺便说一句,我喜欢你的手柄——周末会用Hirschhornsalz做Honigkuchen