Spec-Zone.ru › C++

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)
1) Специализация std::simd::basic_vec является типом с параллельной обработкой данных. Тег ABI по умолчанию определяется реализацией во время компиляции.
2) 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

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

Имя Описание
simd-size-type simd-size-v size
[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:cpp/numeric/simd/basic vec/dsc simd select

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

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 и соответствующими типами, определяемыми реализацией. Эти соответствующие типы — нестандартные векторные типы, доступные в реализации.

Пример

См. также

simd::basic_mask
(C++26)
тип с параллельной обработкой данных и типом элемента bool
(шаблон класса)
simd::mask
(C++26)
удобный псевдоним шаблона для basic_mask, ширину которого можно указать
(псевдоним шаблона)
valarray
числовые массивы, маски массивов и срезы массивов
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/simd/basic_vec

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API