49 template <typename nucleotide_t>
51 requires requires (nucleotide_t
const nucl) { { impl(priority_tag<2>{}, nucl) }; }
53 constexpr
auto operator()(nucleotide_t
const nucl)
const noexcept
55 static_assert(noexcept(impl(priority_tag<2>{}, nucl)),
56 "Only overloads that are marked noexcept are picked up by seqan3::complement().");
57 static_assert(
std::Same<nucleotide_t, decltype(impl(priority_tag<2>{}, nucl))>,
58 "The return type of your complement() implementation must be 'nucleotide_t'.");
60 return impl(priority_tag<2>{}, nucl);
104 inline constexpr
auto complement = detail::adl::only::complement_fn{};
136 template <
typename t>
138 SEQAN3_CONCEPT NucleotideAlphabet = Alphabet<t> && requires (t val)
constexpr auto complement
Return the complement of a nucleotide object.
Definition: concept.hpp:104
#define SEQAN3_CPO_IMPL(PRIO, TERM)
A macro that helps defining the overload set of a customisation point.
Definition: customisation_point.hpp:45
Definition: concept.hpp:32
The main SeqAn3 namespace.
Core alphabet concept and free function/type trait wrappers.
A namespace for third party and standard library specialisations of SeqAn customisation points...
Definition: char.hpp:47
The concept std::Same<T, U> is satisfied if and only if T and U denote the same type.