38 SEQAN3_CONCEPT sequence_pair = requires ()
40 requires tuple_like<t>;
41 requires std::tuple_size_v<t> == 2;
42 requires std::ranges::forward_range<std::tuple_element_t<0, t>>;
43 requires std::ranges::forward_range<std::tuple_element_t<1, t>>;
44 requires semialphabet<std::ranges::range_value_t<std::tuple_element_t<0, t>>>;
45 requires semialphabet<std::ranges::range_value_t<std::tuple_element_t<1, t>>>;
62 SEQAN3_CONCEPT sequence_pair_range = std::ranges::forward_range<t> && sequence_pair<std::ranges::range_value_t<t>>;
84 SEQAN3_CONCEPT indexed_sequence_pair_range = std::ranges::forward_range<t> &&
85 requires (std::ranges::range_value_t<t> value)
87 requires tuple_like<decltype(value)>;
88 requires std::tuple_size_v<decltype(value)> == 2;
89 requires sequence_pair<std::tuple_element_t<0, decltype(value)>>;
107 template <
typename t>
109 SEQAN3_CONCEPT align_pairwise_single_input =
111 std::ranges::viewable_range<std::tuple_element_t<0, t>> &&
112 std::ranges::viewable_range<std::tuple_element_t<1, t>>;
132 template <
typename t>
134 SEQAN3_CONCEPT align_pairwise_range_input =
135 std::ranges::forward_range<t> &&
136 sequence_pair<std::ranges::range_value_t<t>> &&
137 ((std::ranges::viewable_range<t> && std::is_lvalue_reference_v<std::ranges::range_reference_t<t>>) ||
The concept std::copy_constructible is satisfied if T is an lvalue reference type, or if it is a move_constructible object type where an object of that type can constructed from a (possibly const) lvalue or const rvalue of that type in both direct- and copy-initialization contexts with the usual semantics (a copy is constructed with the source unchanged).
Provides seqan3::tuple_like.
Adaptations of concepts from the Ranges TS.
Definition: aligned_sequence_concept.hpp:36
Core alphabet concept and free function/type trait wrappers.