ключевое слово оператора — встроенные типы в C ++ __m128, __m128d, __m256 и т. д.?

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

Я действительно хотел бы иметь побитовые операции (как &=), но, к сожалению, GCC не предоставляет их (для __m128) и это не позволяет мне объявлять их.

3

Решение

Все верно. Эти типы являются расширениями C ++, а не встроенными (почти все, что встроено в C ++, начинается с подчеркивания). Поскольку они являются расширениями, реализация может налагать на них любые ограничения, которые она хочет.

8

Другие решения

Они не встроены. C ++ не зависит от конкретных особенностей архитектуры HW.

6