Loading...
Searching...
No Matches
alphabet/detail/concept.hpp
Go to the documentation of this file.
// SPDX-FileCopyrightText: 2006-2025 Knut Reinert & Freie Universität Berlin
// SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik
// SPDX-License-Identifier: BSD-3-Clause
#pragma once
#include <concepts>
#include <seqan3/alphabet/concept.hpp>
#include <seqan3/core/platform.hpp>
namespace seqan3::detail
{
template <class T, class U>
concept weakly_equality_comparable_with =
requires (std::remove_reference_t<T> const & t, std::remove_reference_t<U> const & u) {
requires std::convertible_to<decltype(t == u), bool>;
requires std::convertible_to<decltype(t != u), bool>;
requires std::convertible_to<decltype(u == t), bool>;
requires std::convertible_to<decltype(u != t), bool>;
};
template <typename t1, typename t2>
concept weakly_ordered_with =
requires (std::remove_reference_t<t1> const & v1, std::remove_reference_t<t2> const & v2) {
requires std::convertible_to<decltype(v1 < v2), bool>;
requires std::convertible_to<decltype(v1 <= v2), bool>;
requires std::convertible_to<decltype(v1 > v2), bool>;
requires std::convertible_to<decltype(v1 >= v2), bool>;
requires std::convertible_to<decltype(v2 < v1), bool>;
requires std::convertible_to<decltype(v2 <= v1), bool>;
requires std::convertible_to<decltype(v2 > v1), bool>;
requires std::convertible_to<decltype(v2 >= v1), bool>;
};
template <typename from_t, typename to_t>
concept convertable_to_through_char_representation =
alphabet<from_t> && alphabet<to_t> && std::default_initializable<from_t>;
} // namespace seqan3::detail
concept.hpp
Core alphabet concept and free function/type trait wrappers.
platform.hpp
Provides platform and dependency checks.
Hide me