SeqAn3  3.2.0
The Modern C++ library for sequence analysis.
scoring_scheme_concept.hpp
Go to the documentation of this file.
1 // -----------------------------------------------------------------------------------------------------
2 // Copyright (c) 2006-2022, Knut Reinert & Freie Universität Berlin
3 // Copyright (c) 2016-2022, Knut Reinert & MPI für molekulare Genetik
4 // This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License
5 // shipped with this file and also available at: https://github.com/seqan/seqan3/blob/master/LICENSE.md
6 // -----------------------------------------------------------------------------------------------------
7 
13 #pragma once
14 
16 
17 namespace seqan3
18 {
19 
58 
60 template <typename t, typename alphabet_t, typename alphabet2_t = alphabet_t>
61 concept scoring_scheme_for =
62  requires (t scheme, alphabet_t const alph1, alphabet2_t const alph2) {
65 
66  {
67  scheme.score(alph1, alph2)
68  };
69  requires std::common_reference_with<decltype(scheme.score(alph1, alph2)),
71 
72  {
73  scheme.score(alphabet_t{}, alphabet2_t{})
74  };
75  requires std::common_reference_with<decltype(scheme.score(alphabet_t{}, alphabet2_t{})),
77  };
79 
80 } // namespace seqan3
Core alphabet concept and free function/type trait wrappers.
requires requires
The rank_type of the semi-alphabet; defined as the return type of seqan3::to_rank....
Definition: alphabet/concept.hpp:164
The generic alphabet concept that covers most data types used in ranges.
A concept that requires that type be able to score two letters.
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29