41 template <
typename type>
43 SEQAN3_CONCEPT const_iterable_range =
44 std::ranges::input_range<std::remove_const_t<type>> &&
45 std::ranges::input_range<type const> &&
46 (std::ranges::forward_range<std::remove_const_t<type>> == std::ranges::forward_range<type const>) &&
48 (std::ranges::random_access_range<std::remove_const_t<type>> == std::ranges::random_access_range<type const>);
57 template <
typename type>
59 SEQAN3_CONCEPT forwarding_range = std::ranges::range<type> && requires (type && val)
61 std::ranges::begin(std::forward<type>(val));
62 std::ranges::end(std::forward<type>(val));
96 template <
typename iterator_t>
98 SEQAN3_CONCEPT pseudo_random_access_iterator =
99 std::forward_iterator<iterator_t> &&
103 std::sized_sentinel_for<iterator_t, iterator_t> &&
104 requires (iterator_t i, iterator_t
const j, std::iter_difference_t<iterator_t>
const n)
131 template <
typename rng_t>
133 SEQAN3_CONCEPT pseudo_random_access_range =
134 std::ranges::forward_range<rng_t> &&
135 pseudo_random_access_iterator<std::ranges::iterator_t<rng_t>>;
The main SeqAn3 namespace.
Requires std::equality_comparable and all remaing comparison operators (<, <=, >, >=)...
Adaptations of concepts from the Ranges TS.
The concept std::same_as<T, U> is satisfied if and only if T and U denote the same type...