std::experimental::simd_abi::deduce
From cppreference.com
| Defined in header <experimental/simd>
|
||
template< class T, std::size_t N, class ...Abis >
struct deduce;
|
(parallelism TS v2) | |
The type deduce<T, N, Abis...>::type is present if and only if:
Tis a vectorizable type,simd_abi::fixed_size<N>is supported, and- every type in
Abis...is an ABI tag.
Let DA denote deduce<T, N, Abis...>::type when it presents, then
simd_size_v<T, DA> == N,simd<T, DA>is default constructible, i.e. it is supported,DAissimd_abi::scalarifN == 1, otherwise it is implementation-defined.
Member types
| Name | Definition |
type
|
an ABI tag type suitable for specified element type T and size N
|
Helper types
template< class T, std::size_t N, class ...Abis >
using deduce_t = typename deduce<T, N, Abis...>::type;
|
(parallelism TS v2) | |
Notes
simd_abi::deduce is SFINAE-friendly.
The ABI tag deduced via this facility is a Quality-of-Implementation feature.
Implementations can base the choice on Abis..., but can also ignore the Abis... arguments. A simple implementation might simply return fixed_size<N> unconditionally. An optimized implementation might return an implementation-defined extended ABI tag for most inputs. Consequently, if you need an ABI tag for a certain number of elements, use fixed_size if ABI stability is of concern, and prefer deduce_t otherwise.
Example
| This section is incomplete Reason: no example |
