Namespaces
Variants

std:: datapar:: basic_simd, std:: datapar:: simd

From cppreference.net
Определено в заголовке <simd>
template < class T, class Abi = /*native-abi*/ < T > >
class basic_simd ;
(1) (начиная с C++26)
template < class T, /*simd-size-type*/ N = /*simd-size-v*/ < T, /*native-abi*/ < T >> >
using simd = basic_simd < T, /*deduce-abi-t*/ < T, N >> ;
(2) (начиная с C++26)
1) std::datapar::basic_simd специализация является типом с распараллеливанием данных. Тег ABI по умолчанию определяется реализацией во время компиляции.
2) std::datapar::simd является шаблоном-псевдонимом, который позволяет пользователям задавать ширину определенного размера. Ширина по умолчанию определяется реализацией во время компиляции.

Каждая специализация basic_simd является полным типом. Специализация является

  • включено , если T является векторизуемым типом , и существует значение M в диапазоне [ 1 , 64 ] такое, что Abi является deduce-abi-t < T, M > ,
  • иначе отключено , если T не является векторизуемым типом,
  • иначе, определяется реализацией, включена ли такая специализация.

Если basic_simd < T, Abi > отключен, специализация имеет все удаленные конструктор по умолчанию, деструктор, конструктор копирования и оператор присваивания копированием. Кроме того, присутствуют только перечисленные ниже типы членов.

Если basic_simd < T, Abi > включен, basic_simd < T, Abi > является TriviallyCopyable .

Содержание

Параметры шаблона

T - тип элемента; векторизуемый тип
Abi - тип-метка используемый для определения ширины и способа хранения
N - ширина типа с параллельной обработкой данных; количество элементов

Типы членов

Тип Определение
value_type T
mask_type datapar :: basic_simd_mask < sizeof ( T ) , Abi >
abi_type Abi

Константа-член

Название Описание
[static]
ширина basic_simd
(публичная статическая константа-член)

Функции-члены

создает объект basic_simd
(public member function)
обращается к указанному элементу
(public member function)
поэлементное увеличение и уменьшение
(public member function)
поэлементные унарные операторы
(public member function)

Функции, не являющиеся членами класса

поэлементные бинарные операторы
(функция)
поэлементные составные бинарные операторы
(функция)
поэлементные операторы сравнения
(функция)
специализирует поэлементный выбор для simd_select
( функция только для демонстрации* )

Руководство по выводу

template < class R, class ... Ts >
basic_simd ( R && r, Ts... ) - > /* см. ниже */ ;
(начиная с C++26)

Руководство по выводу присутствует только если:

Выведенный тип эквивалентен datapar :: simd < ranges:: range_value_t < R > , ranges:: size ( r ) > .

Примечания

Рекомендуется, чтобы реализации поддерживали явные преобразования между включенными специализациями basic_simd и соответствующими определенными реализацией типами. Эти соответствующие типы представляют собой нестандартные векторные типы, доступные в реализации.

Пример

Смотрите также

тип для параллельной обработки данных с типом элементов bool
(шаблон класса)
удобный псевдоним-шаблон для basic_simd_mask , который может указывать свою ширину
(псевдоним-шаблон)
числовые массивы, маски массивов и срезы массивов
(шаблон класса)