This fixes a build failure with libc++ (clang/LLVM). This build
failure is correct: there exists no specialization for
`std::char_traits<unsigned char>`. The standards-compliant way to use
unsigned chars in strings is to use `char8_t`.
Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
class basic_sstring {
static_assert(
(std::is_same<char_type, char>::value
+ || std::is_same<char_type, char8_t>::value
|| std::is_same<char_type, signed char>::value
|| std::is_same<char_type, unsigned char>::value),
"basic_sstring only supports single byte char types");
class sstring_wrapper {
using sstring16 = basic_sstring<char, uint32_t, 16>;
sstring16 s1;
- using sstring24 = basic_sstring<unsigned char, uint16_t, 24>;
+ using sstring24 = basic_sstring<char8_t, uint16_t, 24>;
sstring24 s2;
public:
sstring_wrapper() = default;