16 #include <type_traits>
20 namespace seqan3::detail
23 template <
template <
typename>
typename rebind>
34 template <
typename simd_t>
35 concept simd_concept =
37 typename simd_traits<std::remove_reference_t<simd_t>>::scalar_type;
38 typename simd_traits<std::remove_reference_t<simd_t>>::mask_type;
39 typename simd_traits<std::remove_reference_t<simd_t>>::swizzle_type;
40 requires simd_traits_has_rebind<simd_traits<std::remove_reference_t<simd_t>>::template rebind>::value;
49 } -> std::convertible_to<typename simd_traits<std::remove_reference_t<simd_t>>::scalar_type>;
54 } -> 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>;
60 } -> std::same_as<typename simd_traits<std::remove_reference_t<simd_t>>::mask_type>;
63 } -> std::same_as<typename simd_traits<std::remove_reference_t<simd_t>>::mask_type>;
66 } -> std::same_as<typename simd_traits<std::remove_reference_t<simd_t>>::mask_type>;
69 } -> std::same_as<typename simd_traits<std::remove_reference_t<simd_t>>::mask_type>;
74 } -> std::same_as<std::remove_reference_t<simd_t>>;
77 } -> std::same_as<std::remove_reference_t<simd_t>>;
80 } -> std::same_as<std::remove_reference_t<simd_t>>;
83 } -> std::same_as<std::remove_reference_t<simd_t>>;
86 } -> std::same_as<std::remove_reference_t<simd_t> &>;
89 } -> std::same_as<std::remove_reference_t<simd_t> &>;
92 } -> std::same_as<std::remove_reference_t<simd_t> &>;
95 } -> std::same_as<std::remove_reference_t<simd_t> &>;
104 inline namespace simd
121 template <
typename simd_t>
122 concept simd_concept = !
123 std::is_pointer_v<std::decay_t<simd_t>> && detail::simd_concept<simd_t>;
135 template <
typename t>
137 simd::simd_concept<t>
138 &&
requires () {
requires std::integral<typename simd_traits<std::remove_reference_t<t>>::scalar_type>; };
The <concepts> header from C++20's standard library.
requires requires
The rank_type of the semi-alphabet; defined as the return type of seqan3::to_rank....
Definition: alphabet/concept.hpp:164
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
Provides seqan3::simd::simd_traits.