char16_t is not exactly the wchar_t on Windows. char32_t is not exactly the wchar_t on POSIX. Rather than selecting the appropriate variant, polymorphism picked the template implementation of strncmp, strcpy and strncpy. The one that does not convert UTF16 surrogate pairs against their UTF32 representation. Signed-off-by: Simon Rozman <simon@rozman.si>