std::simd::basic_vec, std::simd::simd
Определён в заголовочном файле <simd> | ||
|---|---|---|
template< class T, class Abi = /*native-abi*/<T> > class basic_vec; | (1) | (начиная с C++26) |
template< class T, /*simd-size-type*/ N = /*simd-size-v*/<T, /*native-abi*/<T>> > using simd = basic_vec<T, /*deduce-abi-t*/<T, N>>; | (2) | (начиная с C++26) |
std::simd::basic_vec является типом с параллельной обработкой данных. Тег ABI по умолчанию определяется реализацией во время компиляции.std::simd::vec — это псевдоним шаблона, позволяющий пользователям задать ширину определённого размера. Ширина по умолчанию определяется реализацией во время компиляции.Каждая специализация basic_vec является полным типом. Специализация
-
включена, если
Tявляется векторизуемым типом и существует значениеMв диапазоне[1,64], для которогоAbi— этоdeduce-abi-t<T,M>, - в противном случае отключена, если
Tне является векторизуемым типом, - в противном случае возможность включения такой специализации определяется реализацией.
Если basic_vec<T,Abi> отключён, у специализации удалены конструктор по умолчанию, деструктор, конструктор копирования и оператор копирующего присваивания. Кроме того, присутствуют только перечисленные ниже типы-члены.
Если basic_vec<T,Abi> включён, basic_vec<T,Abi> удовлетворяет требованиям TriviallyCopyable.
Параметры шаблона
| T | - | тип элемента; векторизуемый тип |
| Abi | - | тип-тег, используемый для определения ширины и способа хранения |
| N | - | ширина типа с параллельной обработкой данных; количество элементов |
Типы-члены
| Тип | Определение |
|---|---|
value_type |
T |
mask_type | simd::basic_mask<sizeof(T),Abi> |
abi_type |
Abi |
Константа-член
| Имя | Описание |
|---|---|
|
[static] | ширина basic_vec (общедоступная статическая константа-член) |
Функции-члены
Template:cpp/numeric/simd/basic vec/dsc constructorTemplate:cpp/numeric/simd/basic vec/dsc operator atTemplate:cpp/numeric/simd/basic vec/dsc operator mem arithTemplate:cpp/numeric/simd/basic vec/dsc operator mem arith2Функции, не являющиеся членами
Template:cpp/numeric/simd/basic vec/dsc operator arithTemplate:cpp/numeric/simd/basic vec/dsc operator compoundTemplate:cpp/numeric/simd/basic vec/dsc operator cmpРуководство по выводу типа
template< class R, class... Ts > basic_vec( R&& r, Ts... ) -> /* see below */; | (начиная с C++26) |
Руководство по выводу типа присутствует только в том случае, если:
-
Rсоответствует требованиямcontiguous_rangeиsized_range, и -
ranges::size(r)является постоянным выражением.
Выведенный тип эквивалентен simd::vec<ranges::range_value_t<R>,ranges::size(r)>.
Примечания
Рекомендуется, чтобы реализации поддерживали явные преобразования между включёнными специализациями basic_vec и соответствующими типами, определяемыми реализацией. Эти соответствующие типы — нестандартные векторные типы, доступные в реализации.
Пример
См. также
|
(C++26) | тип с параллельной обработкой данных и типом элемента bool (шаблон класса) |
|
(C++26) | удобный псевдоним шаблона для basic_mask, ширину которого можно указать(псевдоним шаблона) |
| числовые массивы, маски массивов и срезы массивов (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/simd/basic_vec