20 namespace seqan3::detail
23 template <
template <
typename>
typename rebind>
24 struct simd_traits_has_rebind : std::true_type {};
33 template <
typename simd_t>
34 SEQAN3_CONCEPT simd_concept = requires (simd_t a, simd_t b)
36 typename simd_traits<std::remove_reference_t<simd_t>>::scalar_type;
37 typename simd_traits<std::remove_reference_t<simd_t>>::mask_type;
38 typename simd_traits<std::remove_reference_t<simd_t>>::swizzle_type;
39 requires simd_traits_has_rebind<simd_traits<std::remove_reference_t<simd_t>>::template rebind>::value;
42 requires std::integral<decltype(simd_traits<std::remove_reference_t<simd_t>>::length)>;
43 requires std::integral<decltype(simd_traits<std::remove_reference_t<simd_t>>::max_length)>;
47 typename simd_traits<std::remove_reference_t<simd_t>>::scalar_type);
51 std::same_as,
typename simd_traits<std::remove_reference_t<simd_t>>::mask_type);
53 std::same_as,
typename simd_traits<std::remove_reference_t<simd_t>>::mask_type);
55 std::same_as,
typename simd_traits<std::remove_reference_t<simd_t>>::mask_type);
57 std::same_as,
typename simd_traits<std::remove_reference_t<simd_t>>::mask_type);
59 std::same_as,
typename simd_traits<std::remove_reference_t<simd_t>>::mask_type);
61 std::same_as,
typename simd_traits<std::remove_reference_t<simd_t>>::mask_type);
97 template <
typename simd_t>
98 SEQAN3_CONCEPT simd_concept = !std::is_pointer_v<std::decay_t<simd_t>> && detail::simd_concept<simd_t>;
110 template <
typename t>
111 SEQAN3_CONCEPT simd_index = simd::simd_concept<t> && requires ()
113 requires std::integral<typename simd_traits<std::remove_reference_t<t>>::scalar_type>;
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
Provides seqan3::simd::simd_traits.
Provides C++20 additions to the type_traits header.