18namespace seqan3::detail
35concept sequence_pair =
requires () {
36 requires tuple_like<t>;
38 requires std::ranges::forward_range<std::tuple_element_t<0, t>>;
39 requires std::ranges::forward_range<std::tuple_element_t<1, t>>;
40 requires semialphabet<std::ranges::range_value_t<std::tuple_element_t<0, t>>>;
41 requires semialphabet<std::ranges::range_value_t<std::tuple_element_t<1, t>>>;
58concept sequence_pair_range = std::ranges::forward_range<t> && sequence_pair<std::ranges::range_value_t<t>>;
80concept indexed_sequence_pair_range = std::ranges::forward_range<t> &&
requires (std::ranges::range_value_t<t> value) {
81 requires tuple_like<
decltype(value)>;
83 requires sequence_pair<std::tuple_element_t<0,
decltype(value)>>;
84 requires std::copy_constructible<std::tuple_element_t<1,
decltype(value)>>;
103concept align_pairwise_single_input =
105 || (std::ranges::viewable_range<std::tuple_element_t<0, std::remove_reference_t<t>>>
106 && std::ranges::viewable_range<std::tuple_element_t<1, std::remove_reference_t<t>>>);
128concept align_pairwise_range_input =
129 std::ranges::forward_range<t> && sequence_pair<std::ranges::range_value_t<t>>
131 || align_pairwise_single_input<std::remove_reference_t<std::ranges::range_reference_t<t>>>);
Core alphabet concept and free function/type trait wrappers.
Provides seqan3::tuple_like.