@@ -121,18 +121,22 @@ template <typename... alternative_types>
121121 requires (detail::writable_constexpr_alphabet<alternative_types> && ...) && (std::regular<alternative_types> && ...)
122122 && (sizeof ...(alternative_types) >= 2 )
123123class alphabet_variant :
124- public alphabet_base<alphabet_variant<alternative_types...>,
125- (static_cast <size_t >(alphabet_size<alternative_types>) + ...),
126- char >
124+ public alphabet_base<
125+ alphabet_variant<alternative_types...>,
126+ (static_cast <size_t >(alphabet_size<alternative_types>) + ...),
127+ std::conditional_t <(std::same_as<alphabet_char_t <alternative_types>, char > && ...), char , char16_t >>
127128{
128129private:
129130 // !\brief The base type.
130- using base_t = alphabet_base<alphabet_variant<alternative_types...>,
131- (static_cast <size_t >(alphabet_size<alternative_types>) + ...),
132- char >;
133-
134- static_assert ((std::is_same_v<alphabet_char_t <alternative_types>, char > && ...),
135- " The alphabet_variant is currently only tested for alphabets with char_type char. "
131+ using base_t = alphabet_base<
132+ alphabet_variant<alternative_types...>,
133+ (static_cast <size_t >(alphabet_size<alternative_types>) + ...),
134+ std::conditional_t <(std::same_as<alphabet_char_t <alternative_types>, char > && ...), char , char16_t >>;
135+
136+ static_assert (((std::is_same_v<alphabet_char_t <alternative_types>, char >
137+ || std::is_same_v<alphabet_char_t <alternative_types>, char16_t >)
138+ && ...),
139+ " The alphabet_variant is currently only tested for alphabets with char_type char or char16_t. "
136140 " Contact us on GitHub if you have a different use case: https://github.com/seqan/seqan3 ." );
137141
138142 // !\brief Befriend the base type.
0 commit comments