Namespaces
Variants

std::experimental::simd_abi:: deduce

From cppreference.net
Определено в заголовочном файле <experimental/simd>
template < class T, std:: size_t N, class ... Abis >
struct deduce ;
(parallelism TS v2)

Тип deduce < T, N, Abis... > :: type присутствует тогда и только тогда, когда:

  • T является векторизуемым типом,
  • simd_abi :: fixed_size < N > поддерживается, и
  • каждый тип в Abis... является тегом ABI.

Пусть DA обозначает deduce < T, N, Abis... > :: type когда он присутствует, тогда

  • simd_size_v < T, DA > == N ,
  • simd < T, DA > является конструируемым по умолчанию, т.е. поддерживается,
  • DA является simd_abi::scalar если N == 1 , в противном случае определяется реализацией.

Содержание

Типы членов

Название Определение
type тип тега ABI, подходящий для указанного типа элемента T и размера N

Вспомогательные типы

template < class T, std:: size_t N, class ... Abis >
using deduce_t = typename deduce < T, N, Abis... > :: type ;
(parallelism TS v2)

Примечания

simd_abi::deduce является SFINAE-дружественным.

ABI-тег, выводимый с помощью этого механизма, является функцией качества реализации. Реализации могут основывать выбор на Abis... , но также могут игнорировать Abis... аргументы. Простая реализация может просто возвращать fixed_size < N > безусловно. Оптимизированная реализация может возвращать определяемый реализацией расширенный ABI-тег для большинства входных данных. Следовательно, если вам нужен ABI-тег для определенного количества элементов, используйте fixed_size если важна стабильность ABI, и предпочтите deduce_t в остальных случаях.

Пример

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

(parallelism TS v2)
теговый тип для хранения одного элемента
(typedef)
(parallelism TS v2)
теговый тип для хранения указанного количества элементов
(alias template)
(parallelism TS v2)
теговый тип, обеспечивающий совместимость ABI
(alias template)
(parallelism TS v2)
наиболее эффективный теговый тип
(alias template)