SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
alphabet/detail/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 <concepts>
13
15
16namespace seqan3::detail
17{
25template <class T, class U>
26concept weakly_equality_comparable_with =
27 requires (std::remove_reference_t<T> const & t, std::remove_reference_t<U> const & u) {
28 requires std::convertible_to<decltype(t == u), bool>;
29 requires std::convertible_to<decltype(t != u), bool>;
30 requires std::convertible_to<decltype(u == t), bool>;
31 requires std::convertible_to<decltype(u != t), bool>;
32 };
34
42template <typename t1, typename t2>
43concept weakly_ordered_with =
44 requires (std::remove_reference_t<t1> const & v1, std::remove_reference_t<t2> const & v2) {
45 requires std::convertible_to<decltype(v1 < v2), bool>;
46 requires std::convertible_to<decltype(v1 <= v2), bool>;
47 requires std::convertible_to<decltype(v1 > v2), bool>;
48 requires std::convertible_to<decltype(v1 >= v2), bool>;
49
50 requires std::convertible_to<decltype(v2 < v1), bool>;
51 requires std::convertible_to<decltype(v2 <= v1), bool>;
52 requires std::convertible_to<decltype(v2 > v1), bool>;
53 requires std::convertible_to<decltype(v2 >= v1), bool>;
54 };
56
57} // namespace seqan3::detail
Provides platform and dependency checks.
Hide me