SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
utility/range/concept.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2006-2024 Knut Reinert & Freie Universität Berlin
2// SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
3// SPDX-License-Identifier: BSD-3-Clause
4
10#pragma once
11
12#include <ranges>
13
15
16namespace seqan3
17{
40template <typename type>
42 std::ranges::input_range<std::remove_const_t<type>> && std::ranges::input_range<type const>
43 && (std::ranges::forward_range<std::remove_const_t<type>> == std::ranges::forward_range<type const>)
44 && (std::ranges::bidirectional_range<std::remove_const_t<type>> == std::ranges::bidirectional_range<type const>)
45 && (std::ranges::random_access_range<std::remove_const_t<type>> == std::ranges::random_access_range<type const>);
47
80template <typename iterator_t>
81concept pseudo_random_access_iterator = std::forward_iterator<iterator_t> && !
82std::is_base_of_v<std::random_access_iterator_tag, typename std::iterator_traits<iterator_t>::iterator_category> &&
83 std::totally_ordered<iterator_t> &&
84 std::sized_sentinel_for<iterator_t, iterator_t> && requires (iterator_t i,
85 iterator_t const j,
87 requires std::same_as<decltype(i += n), iterator_t &>;
88 requires std::same_as<decltype(j + n), iterator_t>;
89 requires std::same_as<decltype(n + j), iterator_t>;
90 requires std::same_as<decltype(--i), iterator_t &>;
91 requires std::same_as<decltype(i--), iterator_t>;
92 requires std::same_as<decltype(i -= n), iterator_t &>;
93 requires std::same_as<decltype(j - n), iterator_t>;
94 requires std::same_as<decltype(j[n]),
96 };
98
115template <typename rng_t>
117 std::ranges::forward_range<rng_t> && pseudo_random_access_iterator<std::ranges::iterator_t<rng_t>>;
119} // namespace seqan3
Specifies requirements of an input range type for which the const version of that type satisfies the ...
This concept checks if an iterator type models pseudo random access.
This concept checks if a type models a pseudo random access range.
The main SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
Provides platform and dependency checks.
Hide me