16 #include <type_traits>
43 namespace seqan3::detail::adl_only
47 template <
typename ...args_t>
52 template <
typename alphabet_t>
53 struct enable_aminoacid_cpo :
public detail::customisation_point_object<enable_aminoacid_cpo<alphabet_t>, 2>
56 using base_t = detail::customisation_point_object<enable_aminoacid_cpo<alphabet_t>, 2>;
63 template <
typename alphabet_type>
64 using alphabet_or_type_identity
66 seqan3::is_constexpr_default_constructible_v<std::remove_cvref_t<alphabet_type>>,
73 template <
typename alphabet_type = alphabet_t>
88 template <
typename alphabet_type = alphabet_t>
97 template <
typename alphabet_type = alphabet_t>
100 std::is_base_of_v<seqan3::aminoacid_empty_base, alphabet_type> ==
true
154 template <
typename t>
156 detail::adl_only::enable_aminoacid_cpo<std::remove_cvref_t<t>>::cpo_overload(detail::priority_tag<2>{});
178 template <
typename type>
Core alphabet concept and free function/type trait wrappers.
#define SEQAN3_CPO_OVERLOAD(...)
A macro that helps to define a seqan3::detail::customisation_point_object.
Definition: customisation_point.hpp:113
Provides type traits for working with templates.
constexpr bool enable_aminoacid
A trait that indicates whether a type shall model seqan3::aminoacid_alphabet.
Definition: concept.hpp:146
The generic alphabet concept that covers most data types used in ranges.
A concept that indicates whether an alphabet represents amino acids.
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
This is an empty base class that can be inherited by types that shall model seqan3::aminoacid_alphabe...
Definition: concept.hpp:35