std::experi..._abi::deduce(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– NAME πŸ’–

okay so bestie, welcome to the std::experi..._abi::deduce(3) page from the C++ Standard Libary manual πŸ’… this whole page is literally about std::experimental::simd_abi::deduce β€” and the NAME line is std::experimental::simd_abi::deduce followed by another std::experimental::simd_abi::deduce, because why not 😭.

🌸 Synopsis 🌸

here’s the header + template situation, exact:

Defined in header <experimental/simd>
template< class T, std::size_t N, class ...Abis >  (parallelism TS v2)
struct deduce;

The type deduce<T, N, Abis...>::type is present if and only if:

  • T is 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 β€” yes, β€œpresents” β€” then:

  • simd_size_v<T, DA> == N,
  • simd<T, DA> is default constructible, i.e. it is supported,
  • DA is simd_abi::scalar if N == 1, otherwise it is implementation-defined.

πŸŽ€ Member types πŸŽ€

one-row table realness:

  • Name: type
  • Definition: an ABI tag type suitable for specified element type T and size N

πŸ¦‹ Helper types πŸ¦‹

the helper alias, exactly as promised:

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

πŸ’œ 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

not me arriving with no example πŸ˜­πŸ’€.

🌈 See also 🌈

  • scalar β€” tag type for storing a single element (parallelism TS v2) (typedef)
  • fixed_size β€” tag type for storing specified number of elements (parallelism TS v2) (alias template)
  • compatible β€” tag type that ensures ABI compatibility (parallelism TS v2) (alias template)
  • native β€” tag type that is most efficient (parallelism TS v2) (alias template)

πŸ“ Category πŸ“

  • Todo no example

byeee bestie, this page is from http://cppreference.com, date/version 2024.06.10, and it’s the std::experi..._abi::deduce(3) page β€” mwah πŸ’‹πŸ’–

πŸ“¦ where this page comes from