Стандарты C ++ различают встроенные типы и struct
или же class
типы. Для последнего допускается перегрузка операторов, таких как +
, *=
, или же &
, но не для встроенных типов, когда соответствующие операторы предоставляются языком. AFAIK, типы SSE / AVX не упоминаются в стандарте (но, пожалуйста, исправьте меня), поэтому нужно иметь возможность объявлять эти операторы. GCC не позволяет этого, но ICC разрешает. Который правильный?
Я действительно хотел бы иметь побитовые операции (как &=
), но, к сожалению, GCC не предоставляет их (для __m128
) и это не позволяет мне объявлять их.
Все верно. Эти типы являются расширениями C ++, а не встроенными (почти все, что встроено в C ++, начинается с подчеркивания). Поскольку они являются расширениями, реализация может налагать на них любые ограничения, которые она хочет.
Они не встроены. C ++ не зависит от конкретных особенностей архитектуры HW.