From 55fc6f7cfad17f342be48f6fe6997ee2e73fd558 Mon Sep 17 00:00:00 2001 From: Enrico Seiler Date: Thu, 20 Feb 2025 15:23:16 +0100 Subject: [PATCH] [WIP] Loosen alphabet_variant requirement --- .../alphabet/composite/alphabet_variant.hpp | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/include/seqan3/alphabet/composite/alphabet_variant.hpp b/include/seqan3/alphabet/composite/alphabet_variant.hpp index 82b035a997..df411d9218 100644 --- a/include/seqan3/alphabet/composite/alphabet_variant.hpp +++ b/include/seqan3/alphabet/composite/alphabet_variant.hpp @@ -121,18 +121,22 @@ template requires (detail::writable_constexpr_alphabet && ...) && (std::regular && ...) && (sizeof...(alternative_types) >= 2) class alphabet_variant : - public alphabet_base, - (static_cast(alphabet_size) + ...), - char> + public alphabet_base< + alphabet_variant, + (static_cast(alphabet_size) + ...), + std::conditional_t<(std::same_as, char> && ...), char, char16_t>> { private: //!\brief The base type. - using base_t = alphabet_base, - (static_cast(alphabet_size) + ...), - char>; - - static_assert((std::is_same_v, char> && ...), - "The alphabet_variant is currently only tested for alphabets with char_type char. " + using base_t = alphabet_base< + alphabet_variant, + (static_cast(alphabet_size) + ...), + std::conditional_t<(std::same_as, char> && ...), char, char16_t>>; + + static_assert(((std::is_same_v, char> + || std::is_same_v, char16_t>) + && ...), + "The alphabet_variant is currently only tested for alphabets with char_type char or char16_t. " "Contact us on GitHub if you have a different use case: https://github.com/seqan/seqan3 ."); //!\brief Befriend the base type.