std:: datapar:: basic_simd, std:: datapar:: simd
|
Определено в заголовке
<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) |
std::datapar::basic_simd
специализация является типом с распараллеливанием данных. Тег ABI по умолчанию определяется реализацией во время компиляции.
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
|
Константа-член
| Название | Описание |
|
constexpr
std::
integral_constant
<
simd-size-type
,
simd-size-v
<
T, Abi
>>
size
[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) | |
Руководство по выводу присутствует только если:
-
Rмоделируетcontiguous_rangeиsized_range, и - ranges:: size ( r ) является константным выражением .
Выведенный тип эквивалентен datapar :: simd < ranges:: range_value_t < R > , ranges:: size ( r ) > .
Примечания
Рекомендуется, чтобы реализации поддерживали явные преобразования между включенными специализациями
basic_simd
и соответствующими определенными реализацией типами. Эти соответствующие типы представляют собой нестандартные векторные типы, доступные в реализации.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
(C++26)
|
тип для параллельной обработки данных с типом элементов
bool
(шаблон класса) |
|
(C++26)
|
удобный псевдоним-шаблон для
basic_simd_mask
, который может указывать свою ширину
(псевдоним-шаблон) |
|
числовые массивы, маски массивов и срезы массивов
(шаблон класса) |